一. 描述
colorlog.ColoredFormatter是一个Python logging模块的格式化,用于在终端输出日志的颜色
二. 安装
1
|
pip install colorlog
|
三. 用法
1
2
3
4
5
6
7
8
|
import colorlog
handler = 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:隐性的添加一个颜色重置代码到消息输出,除非输出已经结束。默认为True
- log_colors:记录级别名称到颜色名称的一个映射。可以在colorlog.default_log_colors或下面的例子中找到默认值
- secondary_log_colors:颜色名称到log_colors样式映射的映射,可以在格式化字符串中使用其定义的其他颜色。 请参考下面的示例
- style:在python3.2以以上可用。见logging.Formatter
可以向格式化字符串中添加参数,根据日志级别选择颜色转义码:
- log_color:返回与日志级别关联的颜色
- <name>_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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
from colorlog import ColoredFormatter
formatter = 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级别的日志信息
1
2
3
4
5
6
7
8
9
10
11
|
from colorlog import ColoredFormatter
formatter = ColoredFormatter(
"%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s" ,
secondary_log_colors = {
'message' : {
'ERROR' : 'red' ,
'CRITICAL' : 'red'
}
}
)
|
3. dictConfig的使用
1
2
3
4
5
6
7
8
9
10
|
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的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[loggers]
keys = root
[logger_root]
handlers = stream
level = DEBUG
[formatters]
keys = color
[formatter_color]
class = colorlog.ColoredFormatter
format = % (log_color)s % (levelname)s: % (name)s: % (message)s:test_config.ini
datefmt = % H: % M: % S
[handlers]
keys = stream
[handler_stream]
class = StreamHandler
formatter = color
args = ()
|
配置了颜色格式的任何渠道都可以使用这些参数构造的ColoredFormatter实例
一个完整的例子请参考test/test_config.ini
5. 自定义日志级别的使用
ColoredFormatter将使用logging.addLevelName添加自定义的日志级别
1
2
3
4
5
6
7
8
9
10
|
import logging, colorlog
TRACE = 5
logging.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' )
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/cnhkzyy/p/9574057.html