Python - 实现logging根据日志级别输出不同颜色

  • 前段时间因为工作需要脚本打印不同颜色的日志。查找了网上的一些方法,大部分都需要再安装第三方模块。
  • 后来选择采用比较简易的办法,类似于print()函数自定义内容颜色
  • 这种方式的缺陷是只修改了日志内容的颜色。可以根据自身的需求选择使用哪种方式。

一、完整代码

#!/usr/bin/python
# -*- coding:utf-8 -*-

import logging


class LogColor:
    """
    根据不同的日志级别,打印不颜色的日志
    info:绿色
    warning:黄色
    error:红色
    debug:灰色
    """
    # logging日志格式设置
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s - %(levelname)s: %(message)s')

    @staticmethod
    def info(message: str):
    	# info级别的日志,绿色
        logging.info("\033[0;32m" + message + "\033[0m")

    @staticmethod
    def warning(message: str):
    	# warning级别的日志,黄色
        logging.warning("\033[0;33m" + message + "\033[0m")

    @staticmethod
    def error(message: str):
    	# error级别的日志,红色
        logging.error("\033[0;31m"+"-" * 120 + '\n| ' + message + "\033[0m" + "\n" + "└"+"-" * 150)

    @staticmethod
    def debug(message: str):
    	# debug级别的日志,灰色
        logging.debug("\033[0;37m" + message + "\033[0m")


if __name__ == '__main__':
	# 测试代码
    LogColor.info("info日志")
    LogColor.warning("warning日志")
    LogColor.error("error日志")
    LogColor.debug("debug日志")
  • 运行之后的效果在这里插入图片描述

二、代码解释

  1. logging是Python自带的日志输出模块
    import logging
    
    • logging的日志分为以下五个级别
    logging.critical("critical")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.debug("debug")
    
    • 运行后
      在这里插入图片描述
  2. logging.basicConfig()是用于设置logging日志输出格式的方法
    logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s: %(message)s')
    
    • 特别说明,debug级别的日志是默认不打印的,所以需要设置日志输出的最低界别为debug
    logging.basicConfig(level=logging.DEBUG)
    
  3. 输出的内容可设置想要的颜色
    logging.info("\033[0;32m" + message + "\033[0m")
    
    • 类似于print()
      在这里插入图片描述

三、附:自定义颜色对应代码

  • 自定内容颜色格式:
logging.info("\033[显示方式;前景颜色;背景颜色m"+ "日志内容" +"\033[0m") 
  • 显示方式

    显示方式效果
    0终端默认设置
    1高亮显示
    4使用下划线
    5闪烁
    7反白显示
    8不可见
  • 字体颜色、背景颜色

    字体色背景色颜色描述
    3040黑色
    3141红色
    3242绿色
    3343黃色
    3444蓝色
    3545紫红色
    3646青蓝色
    3747白色

————————————————————————————————————————————
本人运营的博客同名公众号【软件测试必备技能】不定期会上传测试相关资料,有需要可以前往领取。
在这里插入图片描述
在这里插入图片描述
有需要可点击文章下方二维码,前往领取~
在这里插入图片描述

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以通过给 `logging` 模块的输出添加颜色来更好地区分不同级别日志。具体方法是创建一个自定义的 `Formatter` 类,并在其中添加 ANSI 转义序列来修改文本颜色。 以下是一个示例代码: ```python import logging class ColoredFormatter(logging.Formatter): """ 自定义日志格式,添加颜色 """ def format(self, record): if record.levelno == logging.DEBUG: # 绿色字体 color_start = '\033[32m' elif record.levelno == logging.INFO: # 默认字体颜色 color_start = '' elif record.levelno == logging.WARNING: # 黄色字体 color_start = '\033[33m' elif record.levelno == logging.ERROR: # 红色字体 color_start = '\033[31m' elif record.levelno == logging.CRITICAL: # 紫色字体 color_start = '\033[35m' else: color_start = '' color_end = '\033[0m' self._style._fmt = color_start + self._style._fmt + color_end return super().format(record) # 创建 logger logger = logging.getLogger('my_logger') logger.setLevel(logging.DEBUG) # 创建 StreamHandler,并添加到 logger 中 handler = logging.StreamHandler() handler.setLevel(logging.DEBUG) # 创建 Formatter,并添加到 handler 中 formatter = ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) # 添加 handler 到 logger 中 logger.addHandler(handler) # 输出不同级别日志 logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在这个例子中,我们创建了一个自定义的 `Formatter` 类 `ColoredFormatter`,并在其中根据不同日志级别添加了不同颜色。然后将这个 `Formatter` 添加到 `StreamHandler` 中,并将其添加到 logger 中,从而实现了对输出日志颜色控制。 注意,为了保证每个日志输出颜色都是正确的,我们每次都需要在 `format` 方法中重新设置 `_style._fmt`。如果不这么做,可能会出现某些日志输出颜色不正确的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试必备技能

有钱捧个钱场,没钱捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值