跳转到主要内容

为Python的日志模块提供彩色终端输出

项目描述

https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master https://coveralls.io/repos/github/xolox/python-coloredlogs/badge.svg?branch=master

coloredlogs 软件包允许Python的 logging 模块输出彩色终端。 ColoredFormatter 类从 logging.Formatter 继承,并使用 ANSI转义序列 来渲染彩色日志消息。它只使用标准颜色,因此应该可以在任何UNIX终端上工作。目前已在Python 2.7,3.5+ 和 PyPy(2 和 3)上进行了测试。在Windows上,coloredlogs 会自动尝试启用原生ANSI支持(在最新的Windows 10安装上),如果已安装则会回退到使用 colorama。以下是执行 coloredlogs --demo 命令时打印的演示截图

https://coloredlogs.readthedocs.io/en/latest/_images/defaults.png

请注意,上面的截图包含了由我的 verboselogs 包定义的自定义日志级别:如果你同时安装了 coloredlogsverboselogs,它将直接工作(当然,使用 coloredlogs 不需要 verboselogs)。

安装

coloredlogs 包可在 PyPI 上找到,这意味着安装应该非常简单

$ pip install coloredlogs

实际上,安装Python包有多种方式(例如,每个用户的站点包目录虚拟环境 或仅安装系统级)我无意在这里进行讨论,所以如果你感到害怕,请在返回这些说明之前查阅你的选项哦 😉。

可选依赖

Windows上的原生ANSI支持需要安装最新的Windows 10。如果这对您不起作用,请考虑安装 colorama

$ pip install colorama

一旦安装了 colorama,它将自动使用。

用法

以下是一个示例,说明如何轻松开始使用

import coloredlogs, logging

# Create a logger object.
logger = logging.getLogger(__name__)

# By default the install() function installs a handler on the root logger,
# this means that log messages from your code and log messages from the
# libraries that you use will all show up on the terminal.
coloredlogs.install(level='DEBUG')

# If you don't want to see log messages from libraries, you can pass a
# specific logger object to the install() function. In this case only log
# messages originating from that logger will show up on the terminal.
coloredlogs.install(level='DEBUG', logger=logger)

# Some examples.
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. 简单的方法是将 milliseconds 参数传递给 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. 如果使用 %(msecs)d 不够灵活,您可以在日期/时间格式中添加 %f,它将被替换为 %(msecs)03d 的值。对 %f 指令的支持添加到 版本 9.3(由于 #45)。

自定义日志字段

以下自定义日志格式字段受支持

  • %(hostname)s 提供了本地系统的主机名。

  • %(programname)s 提供了当前正在运行的程序名称。

  • %(username)s 提供了当前登录用户的用户名。

coloredlogs.install() 检测到格式字符串中使用了这些字段中的任何一个时,相关的 logging.Filter 子类会自动注册以填充相关的日志记录字段。

更改文本样式和颜色

在线文档包含了一个 自定义文本样式和颜色的示例

从cron输出彩色

当在 cron 任务中使用 coloredlogs 时,cron 发送给您的输出邮件将不包含任何 ANSI 转义序列,因为 coloredlogs 意识到它未连接到交互式终端。如果您希望 cron 发送的邮件包含颜色,有两种方法可以实现:

修改您的crontab

以下是一个基本的 crontab 示例:

MAILTO="your-email-address@here"
CONTENT_TYPE="text/html"
* * * * * root coloredlogs --to-html your-command

在安装 coloredlogs Python 包时,会安装 coloredlogs 程序。当您执行 coloredlogs --to-html your-command 时,它将在外部程序 script 下运行 your-command(您需要安装此程序)。这使得 your-command 认为自己连接到了交互式终端,这意味着它将输出 ANSI 转义序列,然后由 coloredlogs 程序将其转换为 HTML。是的,这有点复杂,但效果很好 :-)

修改您的Python代码

ColoredCronMailer 类提供了一个上下文管理器,当在 crontab 中正确设置 $CONTENT_TYPE 变量时,它会自动启用 HTML 输出。

这需要我的 capturer 包,您可以使用 pip install 'coloredlogs[cron]' 安装它。[cron] 扩展会引入 capturer 2.4 或更高版本,这是捕获输出同时静音所必需的 - 否则,您会在由 cron 发送的电子邮件中收到重复的输出。

上下文管理器还可以用于回溯性地静音已生成的输出,这可以用于避免发送无用信息的 cron 作业,但每隔几分钟还是将输出发送给系统管理员。

联系

coloredlogs 的最新版本可在 PyPIGitHub 上获取。在线文档可在 Read The Docs 上找到,包括一个 变更日志。有关错误报告,请在 GitHub 上创建一个问题。如果您有任何问题或建议,请随时通过 peter@peterodding.com 发送电子邮件给我。

许可

本软件许可协议为 MIT 许可证

© 2020 Peter Odding。

发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

coloredlogs-15.0.1.tar.gz (278.5 kB 查看散列值)

上传时间

构建分发

coloredlogs-15.0.1-py2.py3-none-any.whl (46.0 kB 查看散列值)

上传时间 Python 2 Python 3

由支持