python中的colorlog库使用详解


Posted in Python onJuly 05, 2019

一. 描述

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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python妹子图简单爬虫实例
Jul 07 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
django 多数据库配置教程
May 30 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
python脚本第一行如何写
Aug 30 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
python opencv旋转图片的使用方法
Jun 04 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 #Python
用Python实现将一张图片分成9宫格的示例
Jul 05 #Python
python获取txt文件词向量过程详解
Jul 05 #Python
Python 的字典(Dict)是如何存储的
Jul 05 #Python
关于Python 的简单栅格图像边界提取方法
Jul 05 #Python
Python3+Appium安装使用教程
Jul 05 #Python
Python叠加两幅栅格图像的实现方法
Jul 05 #Python
You might like
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
JS实现微信摇一摇原理解析
2017/07/22 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python生成器generator用法实例分析
2015/06/04 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
详解Python自建logging模块
2018/01/29 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
Python输出指定字符串的方法
2020/02/06 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
致跳远运动员加油稿
2014/02/11 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL