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 相关文章推荐
采用python实现简单QQ单用户机器人的方法
Jul 03 Python
python中pass语句用法实例分析
Apr 30 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python pandas生成时间列表
Jun 29 Python
Django 用户认证组件使用详解
Jul 23 Python
python实现BP神经网络回归预测模型
Aug 09 Python
python 字典套字典或列表的示例
Dec 16 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
Python多线程 Queue 模块常见用法
Jul 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如何透过ODBC来存取数据库
2006/10/09 PHP
模仿OSO的论坛(三)
2006/10/09 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python的json包位置及用法总结
2020/06/21 Python
编程用JAVA解析XML的方式
2013/07/07 面试题
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
会计求职简历自我评价
2015/03/10 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
Python OpenCV实现图形检测示例详解
2022/04/08 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python