返回
彩色打印log的妙招
前端
2023-12-01 21:02:00
前言
在工作中我们经常会打印log去查看数据与关键逻辑。但这些log在项目log过多时寻找起来就会变得异常麻烦并且不规范的log打印让代码看起来不是那么的整洁与优雅,所以我想分享一个关于彩色打印log的方案。
解决方案
为了能够在项目中对不同的log进行着色显示,我们需要用到Python的logging包,这个包是Python标准库的一部分,所以我们可以直接导入使用。
首先,我们需要在项目中创建一个logging的配置文件,通常情况下我们会将其命名为logging.conf
,并将它放在项目的根目录下。在配置文件中,我们可以配置log的格式、级别、输出位置等信息。
[loggers]
keys=root,my_logger
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_my_logger]
level=INFO
handlers=consoleHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
在配置文件中,我们定义了两个logger,分别是root
和my_logger
,并分别设置了它们的级别和输出位置。consoleHandler
是一个流处理器,它将log输出到控制台。simpleFormatter
是一个格式器,它指定了log的格式。
接下来,我们需要在代码中导入logging包,并使用logging.basicConfig()函数来加载配置文件。
import logging
# 加载配置文件
logging.basicConfig(filename='logging.conf', level=logging.DEBUG)
# 获取一个logger实例
logger = logging.getLogger('my_logger')
# 使用logger实例输出log
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
这样,我们就可以在代码中使用不同的log级别来输出log,并且这些log会按照配置文件中的格式输出到控制台。
彩色显示
为了让log的输出更加美观,我们可以使用logging.addFilter()函数来添加一个过滤器,这个过滤器可以根据log的级别来对log的文本颜色进行着色。
import logging
# 创建一个过滤器
filter = logging.Filter(name='my_filter')
# 设置过滤器
filter.filter = lambda record: record.levelno == logging.INFO
# 添加过滤器
logging.getLogger('my_logger').addFilter(filter)
# 使用logger实例输出log
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
这样,只有INFO级别的log才会被着色显示。我们可以根据需要添加不同的过滤器来对不同级别的log进行着色。
总结
通过使用Python的logging包,我们可以很容易地在项目中实现彩色打印log,这使得log的输出更加美观,也更易于调试。