string-color实现日志的不同颜色显示

需要安装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"
        )

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值