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实现apahce网站日志分析示例
Apr 02 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
深入解析Python中的上下文管理器
Jun 28 Python
Python iter()函数用法实例分析
Mar 17 Python
Python的多维空数组赋值方法
Apr 13 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
使用python实现画AR模型时序图
Nov 20 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
python实现图片转换成素描和漫画格式
Aug 19 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
利用Python如何生成hash值示例详解
2017/12/20 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
css3中transition属性详解
2014/09/02 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
酒店出纳岗位职责
2013/12/29 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
迟到检讨书300字
2014/02/14 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
安全承诺书格式范本
2015/04/28 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
JavaScript 原型与原型链详情
2021/11/02 Javascript