python中的colorlog库使用详解

所属分类: 脚本专栏 / python 阅读数: 754
收藏 0 赞 0 分享

一. 描述

colorlog.ColoredFormatter是一个Python logging模块的格式化,用于在终端输出日志的颜色

二. 安装

pip install colorlog

三. 用法

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:在python3.2以以上可用。见logging.Formatter

可以向格式化字符串中添加参数,根据日志级别选择颜色转义码:

  • log_color:返回与日志级别关联的颜色
  • <name>_log_color:如果格式化中配置了辅助颜色,则根据日志级别返回另一种颜色(请参考下面的secondary_log_colors)

在为日志级别配置颜色时,可以使用逗号连接多个转义码(但不能直接在格式字符串中使用)。 例如,black,bg_white将在白色背景上使用转义码表示黑色文本

下面是格式化字符串中可用的:

  • {color},fg_ {color},bg_ {color}:前景色和背景色
  • bold,bold_{color},fg_bold_{color},bg_bold_{color}:粗体/明亮的颜色
  • reset:清除所有的格式(包括前景色和背景色)

可用的颜色名字是: black, red, green, yellow, blue, purple, cyan and white

四. 实例

1. ColoredFormatter用法

以下代码使用每个参数的默认值创建一个用于logging设置的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='%'
)

2. secondary_log_colors的使用

辅助日志颜色是一种根据日志级别选择多种颜色的方法。 secondary_log_colors中的每个键都添加了一个可以在格式化字符串中使用的属性(消息变为message_log_color),并且具有与log_colors参数格式相同的对应值

以下例子使用默认日志颜色突出显示级别名称,并以红色突出显示ERROR和CRITICAL级别的日志信息

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'
  }
 }
)

3. dictConfig的使用

logging.config.dictConfig({
 'formatters': {
  'colored': {
   '()': 'colorlog.ColoredFormatter',
   'format': "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
  }
 },

 ...
})

一个完整的例子参考tests/test_colorlog.py

4. fileConfig的使用

[loggers]
keys=root

[logger_root]
handlers=stream
level=DEBUG

[formatters]
keys=color

[formatter_color]
class=colorlog.ColoredFormatter
format=%(log_color)s%(levelname)s:%(name)s:%(message)s:test_config.ini
datefmt=%H:%M:%S

[handlers]
keys=stream

[handler_stream]
class=StreamHandler
formatter=color
args=()

配置了颜色格式的任何渠道都可以使用这些参数构造的ColoredFormatter实例

一个完整的例子请参考test/test_config.ini

5. 自定义日志级别的使用

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Python常见加密模块用法分析【MD5,sha,crypt模块】

这篇文章主要介绍了Python常见加密模块用法,结合实例形式较为详细的分析了MD5,sha与crypt模块加密的相关实现方法与操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Python向日志输出中添加上下文信息

这篇文章主要介绍了Python向日志输出中添加上下文信息的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python实现的简单dns查询功能示例

这篇文章主要介绍了Python实现的简单dns查询功能,结合实例形式分析了Python基于socket模块的dns信息查询实现技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

利用Anaconda完美解决Python 2与python 3的共存问题

Anaconda 是 Python 的一个发行版,如果把 Python 比作 Linux,那么 Anancoda 就是 CentOS 或者 Ubuntu,下面这篇文章主要给大家介绍了利用Anaconda完美解决Python 2与python 3共存问题的相关资料,文中介绍的非常详
收藏 0 赞 0 分享

Python随机读取文件实现实例

这篇文章主要介绍了Python随机读取文件的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

用生成器来改写直接返回列表的函数方法

下面小编就为大家带来一篇用生成器来改写直接返回列表的函数方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python爬虫入门教程--快速理解HTTP协议(一)

http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道。下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

老生常谈Python进阶之装饰器

下面小编就为大家带来一篇老生常谈Python进阶之装饰器。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈Python基础之I/O模型

下面小编就为大家带来一篇浅谈Python基础之I/O模型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python如何获取服务器硬件信息

这篇文章主要为大家详细介绍了python获取服务器硬件信息的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多