需要安装string-color
pip install string-color
使用时导入
from stringcolor import cs
1. 对日志的等级进行上色
1.1
import logging
class ColorFormatter(logging.Formatter):
def format(self, record):
record.levelname = cs(record.levelname, "cyan") # 直接将所有日志的等级名称修改为青色
return super().format(record)
1.2 不同等级上不同的颜色
class ColorFormatter(logging.Formatter):
LEVEL_COLORS = {
logging.DEBUG: lambda msg: cs(msg, "cyan"),
logging.WARNING: lambda msg: cs(msg, "yellow"),
logging.ERROR: lambda msg: cs(msg, "red"),
logging.CRITICAL: lambda msg: cs(msg, "red").underline(),
}
def format(self, record):
level_color_func = self.LEVEL_COLORS.get(record.levelno)
record.levelname = level_color_func(record.levelname)
return super().format(record)
2. 将日志消息也随着等级一起上色
class ColorFormatter(logging.Formatter):
LEVEL_COLORS = {
logging.INFO: lambda msg: cs(msg, "silver"), # silver 浅灰色,特别浅
logging.DEBUG: lambda msg: cs(msg, "cyan"), # cyan 青色
logging.WARNING: lambda msg: cs(msg, "yellow"),
logging.ERROR: lambda msg: cs(msg, "red"),
logging.CRITICAL: lambda msg: cs(msg, "red").underline(),
}
def format(self, record):
level_color_func = self.LEVEL_COLORS.get(record.levelno)
record.levelname = level_color_func(record.levelname)
record.msg = level_color_func(record.msg)
return super().format(record)
3. 对日志消息中的关键字/词进行上色
class ColorFormatter(logging.Formatter):
def format(self, record):
if re.search(r" 执行失败|Exception|错误|异常|timed out|超时", record.msg):
# 仅对匹配的部分进行上色
pattern = r"(执行失败|Exception|错误|异常|timed out|超时)"
record.msg = re.sub(
pattern,
lambda m: str(cs(m.group(), "red").underline()),
record.msg,
flags=re.IGNORECASE
)
return super().format(record)
运用该日志格式:
if __name__ == "__main__":
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(
ColorFormatter(
"%(asctime)s [%(levelname)s] %(module)s: %(message)s"
)
1312

被折叠的 条评论
为什么被折叠?



