এখানে প্রচুর প্রতিক্রিয়া রয়েছে। তবে কেউই সাজসজ্জার কথা বলছেন না। সুতরাং এখানে আমার।
কারণ এটি অনেক বেশি সাধারণ।
কিছু আমদানি করার দরকার নেই, বা কোনও সাবক্লাস লেখার দরকার নেই:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
NO_COLOR = "\33[m"
RED, GREEN, ORANGE, BLUE, PURPLE, LBLUE, GREY = \
map("\33[%dm".__mod__, range(31, 38))
logging.basicConfig(format="%(message)s", level=logging.DEBUG)
logger = logging.getLogger(__name__)
# the decorator to apply on the logger methods info, warn, ...
def add_color(logger_method, color):
def wrapper(message, *args, **kwargs):
return logger_method(
# the coloring is applied here.
color+message+NO_COLOR,
*args, **kwargs
)
return wrapper
for level, color in zip((
"info", "warn", "error", "debug"), (
GREEN, ORANGE, RED, BLUE
)):
setattr(logger, level, add_color(getattr(logger, level), color))
# this is displayed in red.
logger.error("Launching %s." % __file__)
এটি লালতে ত্রুটিগুলি সেট করে, নীল রঙে মেসেজগুলি ডিবাগ করে on প্রশ্নে জিজ্ঞাসা মত।
আমরা এমনকি নিতে একটি মোড়ক মানিয়ে নিতে পারে color
বার্তাটির রঙটি ব্যবহার করে গতিশীলতার পক্ষে যুক্তিlogger.debug("message", color=GREY)
সম্পাদনা: সুতরাং রানটাইমের সময় রঙ সেট করার জন্য অভিযোজিত ডেকোরেটরটি এখানে:
def add_color(logger_method, _color):
def wrapper(message, *args, **kwargs):
color = kwargs.pop("color", _color)
if isinstance(color, int):
color = "\33[%dm" % color
return logger_method(
# the coloring is applied here.
color+message+NO_COLOR,
*args, **kwargs
)
return wrapper
# blah blah, apply the decorator...
# this is displayed in red.
logger.error("Launching %s." % __file__)
# this is displayed in blue
logger.error("Launching %s." % __file__, color=34)
# and this, in grey
logger.error("Launching %s." % __file__, color=GREY)