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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
python3简单实现微信爬虫
Apr 09 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
python3.5 email实现发送邮件功能
May 22 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
python创建n行m列数组示例
Dec 02 Python
python 实现单通道转3通道
Dec 03 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python装饰器的应用场景代码总结
Apr 10 Python
python + selenium 刷B站播放量的实例代码
Jun 12 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
7个JS基础知识总结
2014/03/05 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
大学生表扬信范文
2014/01/09 职场文书
人事任命书格式
2014/06/05 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
工会趣味活动方案
2014/08/18 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
儿园租房协议书范本
2014/12/02 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
教师节大会主持词
2015/07/06 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
centos7安装mysql5.7经验记录
2022/05/02 Servers