Python 写程序专用 log 分享(三)——彩色log

接上一篇

https://blog.csdn.net/HaoZiHuang/article/details/127127752

继承 StreamHandler 写一个带颜色的 Handler,并通过 addHandler 添加到 logger

自定义 StreamHandler 只需要重写 emit 方法

import logging
import sys


# 定义日志颜色
class Color:
    BLUE = "\033[94m"
    GREEN = "\033[92m"
    YELLOW = "\033[93m"
    RED = "\033[91m"
    END = "\033[0m"


# 自定义日志处理器
class ColorHandler(logging.StreamHandler):
    def emit(self, record):
        log_entry = self.format(record)
        if record.levelno == logging.DEBUG:
            log_entry = f"{Color.BLUE}{log_entry}{Color.BLUE}"
        elif record.levelno == logging.INFO:
            log_entry = f"{Color.GREEN}{log_entry}{Color.END}"
        elif record.levelno == logging.WARNING:
            log_entry = f"{Color.YELLOW}{log_entry}{Color.END}"
        elif record.levelno == logging.ERROR:
            log_entry = f"{Color.RED}{log_entry}{Color.END}"
        sys.stdout.write(log_entry + "\n")
        sys.stdout.flush()


# 配置日志
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# 添加自定义处理器
color_handler = ColorHandler()
color_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(message)s")
color_handler.setFormatter(formatter)
logger.addHandler(color_handler)

# 输出彩色日志
logger.debug("伞兵一号")
logger.info("还有17张牌你能秒我?")
logger.warning("你能秒杀我?")
logger.error("你今天能17张牌......")

代码拿来即用,效果展示:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值