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对SQLite数据库操作
Apr 06 Python
python之PyMongo使用总结
May 26 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
面向对象学习之pygame坦克大战
Sep 11 Python
详解python常用命令行选项与环境变量
Feb 20 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
python 19个值得学习的编程技巧
Aug 15 Python
python打包多类型文件的操作方法
Sep 21 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 Python
Django如何重置migration的几种情景
Feb 24 Python
pytorch 使用半精度模型部署的操作
May 24 Python
Python实战之实现简易的学生选课系统
May 25 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优化及注意事项
2016/07/04 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
如何判断图片地址是否失效
2007/02/02 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python subprocess模块常见用法分析
2018/06/12 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
学生实习推荐信范文
2013/11/26 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
创业计划书之物流运送
2019/09/17 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
Go语言基础map用法及示例详解
2021/11/17 Golang