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导入txt数据到mysql的方法
Apr 08 Python
python如何在终端里面显示一张图片
Aug 17 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
numpy数组拼接简单示例
Dec 15 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python面向对象之成员相关知识总结
Jun 24 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
ajax实现无刷新分页(php)
2010/07/18 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php创建session的方法实例详解
2015/01/27 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
vue实现通讯录功能
2018/07/14 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
python端口扫描系统实现方法
2014/11/19 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
乡镇防汛工作汇报
2014/10/28 职场文书
公司股份合作协议书
2014/12/07 职场文书
2014年法务工作总结
2014/12/11 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
使用scrapy实现增量式爬取方式
2022/06/21 Python