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中操作MySQL入门实例
Feb 08 Python
python操作sqlite的CRUD实例分析
May 08 Python
Python输出汉字字库及将文字转换为图片的方法
Jun 04 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
解决Python对齐文本字符串问题
Aug 28 Python
python清空命令行方式
Jan 13 Python
python实现人机五子棋
Mar 25 Python
python上selenium的弹框操作实现
Jul 13 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
wordpress之wp-settings.php
2007/08/17 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python字符串的修改方法实例
2019/12/19 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android