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 不会在时间戳中输出毫秒,除非您明确指出 告诉它。有三种方法可以做到这一点:

  1. 简单的方法是将毫秒参数传递给 coloredlogs.install():

    coloredlogs.install(milliseconds=True)

    这在版本 7.1 中得到了支持(由于 #16)。

  2. 或者,您可以更改日志格式以包含“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 中,增加了对用户定义的日志格式的支持。

  3. 如果 的使用不够灵活,您可以改为添加到日期/时间格式中,它将替换为 的值。 版本 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

关于默认值

下面是默认配置的屏幕截图,以便于 与 以下自定义项的屏幕截图(这是与 如介绍所示):

Screen shot of colored logging with defaults.

上面的屏幕截图是从不支持微弱文本的屏幕截图中截取的 颜色,否则用于调试消息的绿色将具有 与用于垃圾邮件的绿色略有不同。urxvt

除了垃圾邮件级别的微弱风格外,coloredlogs 的默认配置还坚持使用原始 ANSI 定义的八调色板 标准,以便跨终端提供某种程度一致的体验 和终端仿真器。

可用的文本样式和颜色

当然,您可以自由自定义默认配置,在这种情况下,您可以 可以使用终端支持的任何文本样式或颜色。 您可以使用该命令来尝试支持的文本 样式和颜色:humanfriendly --demo

Screen shot of the 'humanfriendly --demo' command.

更改日志格式

最简单的自定义是更改日志格式,例如:

$ 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)

这是在终端中的样子(我总是在终端中使用 黑色背景和白色文本):

Screen shot of colored logging with custom log format.

更改日期/时间格式

您还可以更改日期/时间格式,例如,您可以删除日期 只留下时间:

$ 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)

下面是它在终端中的样子:

Screen shot of colored logging with custom date/time format.

更改颜色/样式

最后,您可以自定义使用的颜色和文本样式:

$ 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 成绩单中看不到这些,但是 请看以下屏幕截图:

Screen shot of colored logging with custom colors.
posted @ 2023-11-11 20:24  linux星  阅读(95)  评论(0编辑  收藏  举报