跳转到主要内容

为Python的日志模块输出添加颜色。

项目描述

带颜色的日志格式化!

为Python的logging模块输出添加颜色。

状态

colorlog目前需要Python 3.6或更高版本。旧版本(低于5.x.x)支持Python 2.6及以上。

  • colorlog 6.x需要Python 3.6或更高。
  • colorlog 5.x是一个过渡版本,将警告Python 2用户降级。
  • colorlog 4.x是支持Python 2的最终版本。

colorama作为必需依赖项包含在内,并在使用colorlog在Windows上时初始化。

这个库已经超过十年历史,在其大部分生命周期中支持了广泛的Python版本,这使得它难以添加新功能。colorlog 6可能会破坏向后兼容性,以便更容易添加新功能,但仍可能不接受所有更改或功能请求。colorlog 4可能接受必要的错误修复,但不应该被视为积极维护,并且不会接受任何重大更改或新功能。

安装

使用以下命令从PyPI安装

pip install colorlog

多个Linux发行版提供官方软件包(包括DebianArchFedoraGentooOpenSuseUbuntu),其他则提供用户提供的软件包(BSD portsConda)。

用法

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}:前景和背景颜色。
  • boldbold_{color}fg_bold_{color}bg_bold_{color}:粗体/亮色。
  • thinthin_{color}fg_thin_{color}:细颜色(终端相关)。
  • reset:清除所有格式化(前景和背景颜色)。

可用的颜色名称有

  • 黑色
  • 红色
  • 绿色
  • 黄色
  • 蓝色,
  • 紫色
  • 青色
  • 白色

您还可以使用“亮色”。这些不是标准的ANSI代码,并且在不同终端上的支持差异很大。

  • 亮黑色
  • 亮红色
  • 亮绿色
  • 亮黄色
  • 亮蓝色
  • 亮紫色
  • 亮青色
  • 亮白色

示例

Example output

以下代码创建了一个用于日志设置的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参数格式相同的对应值。

以下示例使用默认日志颜色突出显示级别名称,并突出显示errorcritical级别日志消息中的消息为红色。

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

使用这些参数创建的 ColoredFormatter 实例将被配置为使用 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 日志记录,您可能觉得它们很有用。

使用 colorlog 的项目

GitHub 提供了 依赖于 colorlog 的项目列表

一些早期采用者包括 ErrbotPythranzenlog

许可证

版权所有 (c) 2012-2021 Sam Clements sam@borntyping.co.uk

在此前提下,免费授予任何获得此软件及其相关文档副本(“软件”)的人使用该软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件的接受者为此目的而这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是在合同行为、侵权行为或其他行为中产生的,并且与软件或软件的使用或其他交易有关。

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源分发

colorlog-6.8.2.tar.gz (16.5 kB 查看哈希值)

上传时间

构建分发

colorlog-6.8.2-py3-none-any.whl (11.4 kB 查看哈希值)

上传时间 Python 3

支持者