将颜色添加到Python的logging
模块的输出中。
Colorlog当前需要Python 3.6或更高。旧版本(低于5.xx)支持Python 2.6及以上。
在Windows上使用Colorlog时,Colorama作为所需的依赖性和初始化。
该图书馆已经过去了十多年,并在其一生中支持了广泛的Python版本,这使得成为一个很难添加新功能的图书馆。 ColorLog 6可能会向后兼容,以便可以更轻松地添加较新的功能,但仍然可能不接受所有更改或功能请求。 ColorLog 4可能会接受必需的错误编织,但不应被视为积极维护,并且不会接受任何重大更改或新功能。
从PYPI安装:
pip install colorlog
几个Linux发行版提供了官方包(Debian,Arch,Fedora,Gentoo,Opensuse和Ubuntu),而其他则提供了用户提供的软件包(BSD端口,Conda)。
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
:在Python 3.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}
:大胆/明亮的颜色。thin
, thin_{color}
, fg_thin_{color}
:薄色(终端依赖)。reset
:清除所有格式(前景和背景颜色)。可用的颜色名称是:
black
red
green
yellow
blue
,purple
cyan
white
您也可以使用“明亮”的颜色。这些不是标准的ANSI代码,对这些代码的支持在不同终端之间差异很大。
light_black
light_red
light_green
light_yellow
light_blue
light_purple
light_cyan
light_white
以下代码使用每个参数的默认值创建了一个用于记录设置的ColoredFormatter
。
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 = '%'
)
secondary_log_colors
辅助日志颜色是一种基于日志级别选择多种颜色的一种方式。 secondary_log_colors
中的每个键都添加了一个属性,该属性可用于格式字符串( message
为message_log_color
),并且具有与log_colors
参数相同的相应值。
以下示例使用默认日志颜色突出显示了级别名称,并突出显示了红色消息以获取error
和critical
级别日志消息。
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'
}
}
)
dictConfig
logging . config . dictConfig ({
'formatters' : {
'colored' : {
'()' : 'colorlog.ColoredFormatter' ,
'format' : "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
}
}
})
完整的示例字典可以在tests/test_colorlog.py
中找到。
fileConfig
...
[formatters]
keys =color
[formatter_color]
class =colorlog.ColoredFormatter
format =%(log_color)s%(levelname)-8s%(reset)s %(bg_blue)s[%(name)s]%(reset)s %(message)s from fileConfig
datefmt =%m-%d %H:%M:%S
然后,使用这些参数创建的有色形式的实例将由配置为使用color
格式化器的任何处理程序使用。
完整的示例配置可以在tests/test_config.ini
中找到。
coloredFormatter将使用logging.addLevelName
添加的自定义日志级别:
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' )
在tests/test_colorlog.py
中找到了类似于上述示例的测试。
ColorLog处于维护模式。我尝试确保发布错误的文件,但是与Python 2.6+和Python 3+的兼容性使其成为很难添加功能的代码库。任何可能会破坏现有用户向后兼容的更改将不考虑。
您可能会发现一些更现代的图书馆来改进Python的记录。
GitHub提供了依赖ColorLog的项目列表。
一些早期采用者包括Errbot,Pythran和Zenlog。
版权(c)2012-2021 sam clements [email protected]
特此免费授予任何获得此软件副本和相关文档文件(“软件”)的人,以无限制处理该软件,包括无限制,使用,复制,修改,合并的权利,出版,分发,分布和/或出售软件的副本,并允许提供该软件的人,但要遵守以下条件:
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人均不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权或其他方面的诉讼中,与软件或与软件或使用或其他交易有关的诉讼或其他责任软件。