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中使用序列的方法
Aug 03 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
实例讲解python中的协程
Oct 08 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
python-numpy-指数分布实例详解
Dec 07 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
Python与C++中梯度方向直方图的实现
Mar 17 Python
Python序列化模块JSON与Pickle
Jun 05 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 Session无效分析资料整理
2016/11/29 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
基于hashlib模块--加密(详解)
2017/06/21 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
匡威英国官网:Converse英国
2018/12/02 全球购物
机电一体化专业推荐信
2013/12/03 职场文书
干部培训自我鉴定
2014/01/22 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
开业典礼主持词
2014/03/21 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
考博导师推荐信范文
2015/03/27 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015年推普周活动方案
2015/05/06 职场文书
《鲸》教学反思
2016/02/23 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS