• Python如何给不同级别的错误日志设置不同的显示颜色?
  • 发布于 2个月前
  • 221 热度
    0 评论
前言
编写Python程序时,默认使用的Python logging模块在控制台打印是没法指定颜色的。不同错误级别的日志输出看起来都一样,不容易分辨出较为严重的错误在哪。我们可以使用colorlog模块,为不同级别的日志配置不同的控制台文字颜色。让较为严重级别的日志颜色更为醒目。

前置条件
使用pip安装colorlog库。
pip install colorlog

使用方式
下面给出一段简单示例:
import colorlog
import logging
// 堆代码 duidaima.com
def init_logger():
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    if not logger.handlers:
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(logging.DEBUG)
        fmt_string = '%(log_color)s[%(asctime)s][%(name)s][%(levelname)s]%(message)s'
        # black red green yellow blue purple cyan and white
        log_colors = {
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'purple'
        }
        fmt = colorlog.ColoredFormatter(fmt_string, log_colors=log_colors)
        stream_handler.setFormatter(fmt)
        logger.addHandler(stream_handler)
    return logger


def test():
    logger = init_logger()
    logger.debug('demo log')
    logger.info('info log')
    logger.warning('warning log')
    logger.error('fatal log')
    logger.critical('critical log')
主要的配置项为日志级别和颜色的对应关系,即log_colors变量。

文字颜色支持如下几种:
black
red
yellow
blue
purple
cyan
white
除了文字颜色外,还可以指定背景颜色。统一命名格式为bg_{颜色}。如下所示:
bg_black
bg_red
bg_yellow
bg_blue
bg_purple
bg_cyan
bg_white
文字样式还支持bold。例如bg_bold_cyan或者bold_cyan。

前景色和背景色支持组合使用,例如:
        log_colors = {
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'bg_red',
            'CRITICAL': 'bg_purple,bold_cyan'
        }

用户评论