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中的struct模块
Apr 28 Python
Python中列表的一些基本操作知识汇总
May 20 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
Python中垃圾回收和del语句详解
Nov 15 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
python+opencv实现目标跟踪过程
Jun 21 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如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
英语专业学生个人求职信
2014/01/28 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
高中课程设置方案
2014/05/28 职场文书
微电影大赛策划方案
2014/06/05 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
护士医德考评自我评价
2015/03/03 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android