coloredlogs用法

发布时间 2023-11-11 20:28:36作者: linux星

用法

下面是一个示例,说明入门是多么容易:

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 格式化为适用的日志记录。自动过滤子类 已注册以填充相关的日志记录字段。