【译】:python中的colorlog库(python colorlog)

网友投稿 644 2022-08-26


【译】:python中的colorlog库(python colorlog)

本文翻译自​​colorlog官方文档​​

一. 描述

colorlog.ColoredFormatter是一个Python logging模块的格式化,用于在终端输出日志的颜色

二. 安装

pip install colorlog

三. 用法

import colorloghandler = colorlog.StreamHandler()handler.setFormatter(colorlog.ColoredFormatter( '%(log_color)s%(levelname)s:%(name)s:%(message)s'))logger = colorlog.getLogger('example')logger.addHandler(handler)

ColoredFormatter类带着一些参数:

format:用于输出日志的格式化字符串(必需)datefmt:一个传递给基类的可选的日期格式。见​​logging.Formatter​​reset:隐性的添加一个颜色重置代码到消息输出,除非输出已经结束。默认为Truelog_colors:记录级别名称到颜色名称的一个映射。可以在colorlog.default_log_colors或下面的例子中找到默认值secondary_log_colors:颜色名称到log_colors样式映射的映射,可以在格式化字符串中使用其定义的其他颜色。 请参考下面的示例style:在python3.2以以上可用。见​​logging.Formatter​​

可以向格式化字符串中添加参数,根据日志级别选择颜色转义码:

log_color:返回与日志级别关联的颜色_log_color:如果格式化中配置了辅助颜色,则根据日志级别返回另一种颜色(请参考下面的secondary_log_colors)

在为日志级别配置颜色时,可以使用逗号连接多个转义码(但不能直接在格式字符串中使用)。 例如,black,bg_white将在白色背景上使用转义码表示黑色文本

下面是格式化字符串中可用的:

{color},fg_ {color},bg_ {color}:前景色和背景色bold,bold_{color},fg_bold_{color},bg_bold_{color}:粗体/明亮的颜色reset:清除所有的格式(包括前景色和背景色)

可用的颜色名字是: black, red, green, yellow, blue, purple, cyan and white

四. 实例

1. ColoredFormatter用法

以下代码使用每个参数的默认值创建一个用于logging设置的ColoredFormatter

from colorlog import ColoredFormatterformatter = ColoredFormatter( "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s", datefmt=None, reset=True, log_colors={ 'DEBUG': 'cyan', 'INFO': 'green', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'red,bg_white', }, secondary_log_colors={}, style='%')

2. secondary_log_colors的使用

辅助日志颜色是一种根据日志级别选择多种颜色的方法。 secondary_log_colors中的每个键都添加了一个可以在格式化字符串中使用的属性(消息变为message_log_color),并且具有与log_colors参数格式相同的对应值

以下例子使用默认日志颜色突出显示级别名称,并以红色突出显示ERROR和CRITICAL级别的日志信息

from colorlog import ColoredFormatterformatter = ColoredFormatter( "%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s", secondary_log_colors={ 'message': { 'ERROR': 'red', 'CRITICAL': 'red' } })

3. dictConfig的使用

logging.config.dictConfig({ 'formatters': { 'colored': { '()': 'colorlog.ColoredFormatter', 'format': "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s" } }, ...})

一个完整的例子参考tests/test_colorlog.py

4. fileConfig的使用

[loggers]keys=root[logger_root]handlers=streamlevel=DEBUG[formatters]keys=color[formatter_color]class=colorlog.ColoredFormatterformat=%(log_color)s%(levelname)s:%(name)s:%(message)s:test_config.inidatefmt=%H:%M:%S[handlers]keys=stream[handler_stream]class=StreamHandlerformatter=colorargs=()

配置了颜色格式的任何渠道都可以使用这些参数构造的ColoredFormatter实例

一个完整的例子请参考test/test_config.ini

5. 自定义日志级别的使用

ColoredFormatter将使用logging.addLevelName添加自定义的日志级别

import logging, colorlogTRACE = 5logging.addLevelName(TRACE, 'TRACE')formatter = colorlog.ColoredFormatter(log_colors={'TRACE': 'yellow'})handler = logging.StreamHandler()handler.setFormatter(formatter)logger = logging.getLogger('example')logger.addHandler(handler)logger.setLevel('TRACE')logger.log(TRACE, 'a message using a custom level')


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python并发编程实战(二):怎样选择多线程、多进程和多协程(python多线程和多进程使用建议)
下一篇:python并发编程实战(四):使用多线程,python爬虫被加速10倍(python 爬虫 多线程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~