coloredlogs用法
用法
下面是一个示例,说明入门是多么容易:
import coloredlogs, logging
# 创建一个记录器对象。
logger = logging.getLogger(__name__)
# 默认情况下,install()函数会在根记录器上安装一个处理程序,
# 这意味着从代码中记录消息,您使用的库都将显示在终端上。
coloredlogs.install(level='DEBUG')
# 如果您不想看到库中的日志消息,可以通过
#install()函数的特定记录器对象。在这种情况下,只记录来自该记录器的消息将显示在终端上。
coloredlogs.install(level='DEBUG', logger=logger)
# 一些例子。
logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.error("this is an error message")
logger.critical("this is a critical message")
日志消息的格式
ColoredFormatter 类支持用户定义的日志格式,因此您可以使用 您喜欢的任何日志格式。默认日志格式如下:
%(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s
此日志格式将产生以下输出:
2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug'
2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose'
2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info'
...
实现毫秒级精度
如果您从 logging.basicConfig() 切换到 coloredlogs.install(),您可能会注意到时间戳不再包含毫秒。这是因为 coloredlogs 不会在时间戳中输出毫秒,除非您明确指出 告诉它。有三种方法可以做到这一点:
-
简单的方法是将毫秒参数传递给 coloredlogs.install():
coloredlogs.install(milliseconds=True)
-
或者,您可以更改日志格式以包含“msecs”:
%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s
以下是对 coloredlogs.install() 的调用如下所示:
coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s')
通过自定义日志格式,您还可以更改分隔符 将秒与毫秒(上面的逗号)分开。这成为可能 在版本 3.0 中,增加了对用户定义的日志格式的支持。
-
如果 的使用不够灵活,您可以改为添加到日期/时间格式中,它将替换为 的值。 版本 9.3 中添加了对该指令的支持(由于 #45)。
%(msecs)d
%f
%(msecs)03d
%f
自定义日志记录字段
支持以下自定义日志格式字段:
%(hostname)s
提供本地系统的主机名。%(programname)s
提供当前正在运行的程序的名称。%(username)s
提供当前登录用户的用户名。
当 coloredlogs.install() 检测到这些字段中的任何一个被用于 将 string 格式化为适用的日志记录。自动过滤子类 已注册以填充相关的日志记录字段。
环境变量
以下环境变量可用于配置coloredlogs模块,而无需编写任何代码:
环境变量 | 默认值 | 值的类型 |
---|---|---|
$COLOREDLOGS_AUTO_INSTALL |
‘false’ | 一个 Boolean 值,用于控制是否被调用 |
$COLOREDLOGS_LOG_LEVEL |
‘INFO’ | 日志级别名称 |
$COLOREDLOGS_LOG_FORMAT |
DEFAULT_LOG_FORMAT |
日志格式字符串 |
$COLOREDLOGS_DATE_FORMAT |
DEFAULT_DATE_FORMAT |
日期/时间格式字符串 |
$COLOREDLOGS_LEVEL_STYLES |
DEFAULT_LEVEL_STYLES |
看 parse_encoded_styles() |
$COLOREDLOGS_FIELD_STYLES |
DEFAULT_FIELD_STYLES |
看 parse_encoded_styles() |
如果设置了环境变量$NO_COLOR(该值无关紧要,即使是空字符串也可以),那么coloredlogs.install()将以此作为不应使用颜色的提示(除非调用方传递了覆盖).isatty=True
关于默认值
下面是默认配置的屏幕截图,以便于 与 以下自定义项的屏幕截图(这是与 如介绍所示):
上面的屏幕截图是从不支持微弱文本的屏幕截图中截取的 颜色,否则用于调试消息的绿色将具有 与用于垃圾邮件的绿色略有不同。urxvt
除了垃圾邮件级别的微弱风格外,coloredlogs 的默认配置还坚持使用原始 ANSI 定义的八调色板 标准,以便跨终端提供某种程度一致的体验 和终端仿真器。
可用的文本样式和颜色
当然,您可以自由自定义默认配置,在这种情况下,您可以 可以使用终端支持的任何文本样式或颜色。 您可以使用该命令来尝试支持的文本 样式和颜色:humanfriendly --demo
更改日志格式
最简单的自定义是更改日志格式,例如:
$ export COLOREDLOGS_LOG_FORMAT='[%(hostname)s] %(asctime)s %(message)s'
$ coloredlogs --demo
[peter-mbp] 2018-01-14 15:45:44 message with level spam (5)
[peter-mbp] 2018-01-14 15:45:45 message with level debug (10)
[peter-mbp] 2018-01-14 15:45:46 message with level verbose (15)
[peter-mbp] 2018-01-14 15:45:47 message with level info (20)
[peter-mbp] 2018-01-14 15:45:48 message with level notice (25)
[peter-mbp] 2018-01-14 15:45:49 message with level warning (30)
[peter-mbp] 2018-01-14 15:45:50 message with level success (35)
[peter-mbp] 2018-01-14 15:45:51 message with level error (40)
[peter-mbp] 2018-01-14 15:45:52 message with level critical (50)
这是在终端中的样子(我总是在终端中使用 黑色背景和白色文本):
更改日期/时间格式
您还可以更改日期/时间格式,例如,您可以删除日期 只留下时间:
$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s'
$ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S'
$ coloredlogs --demo
15:45:34 - message with level spam (5)
15:45:35 - message with level debug (10)
15:45:36 - message with level verbose (15)
15:45:37 - message with level info (20)
15:45:38 - message with level notice (25)
15:45:39 - message with level warning (30)
15:45:40 - message with level success (35)
15:45:41 - message with level error (40)
15:45:42 - message with level critical (50)
下面是它在终端中的样子:
更改颜色/样式
最后,您可以自定义使用的颜色和文本样式:
$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s'
$ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S'
$ export COLOREDLOGS_FIELD_STYLES='' # no styles
$ export COLOREDLOGS_LEVEL_STYLES='spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red'
$ coloredlogs --demo
15:45:23 - message with level spam (5)
15:45:24 - message with level debug (10)
15:45:25 - message with level verbose (15)
15:45:26 - message with level info (20)
15:45:27 - message with level notice (25)
15:45:28 - message with level warning (30)
15:45:29 - message with level success (35)
15:45:30 - message with level error (40)
15:45:31 - message with level critical (50)
以下是此处使用的功能的说明:
- 中使用的数字演示了 256 的用法 颜色模式(数字是指固定的 256 种颜色模式调色板)。
$COLOREDLOGS_LEVEL_STYLES
- 成功级别演示了文本样式(粗体)的使用。
- 临界级别演示了背景色(红色)的使用。
当然,在上面引用的 shell 成绩单中看不到这些,但是 请看以下屏幕截图: