Python 打印彩色日志

开发 前端
我相信每一个开发者都有打印日志的习惯,好看的日志可以加快调试的速度,可以更好的了解程序中发生的事情。本文分享一个技巧,可以让 Python 在控制台输出彩色的日志。


安装 coloredlogs

pip install coloredlogs

使用

首先,和正常打印日志一样,我们创建一个 logger

logging.basicConfig()
logger = logging.getLogger(name='mylogger')

然后,把 logger 安装到 coloredlogs:

coloredlogs.install(logger=logger)
logger.propagate = False

logger.propagate = False 确保 coloredlogs 不会将我们的日志事件传递给根 logger,这可以防止我们重复记录每个事件。

我们想为我们的控制台输出添加一些样式,可以在这里定义:

coloredFormatter = coloredlogs.ColoredFormatter(
fmt='[%(name)s] %(asctime)s %(funcName)s %(lineno)-3d %(message)s',
level_styles=dict(
debug=dict(color='white'),
info=dict(color='blue'),
warning=dict(color='yellow', bright=True),
error=dict(color='red', bold=True, bright=True),
critical=dict(color='black', bold=True, background='red'),
),
field_styles=dict(
name=dict(color='white'),
asctime=dict(color='white'),
funcName=dict(color='white'),
lineno=dict(color='white'),
)
)

接下来就和正常使用日志一样了,配置一个流处理器,让日志显示在控制台:

ch = logging.StreamHandler(stream=sys.stdout)
ch.setFormatter(fmt=coloredFormatter)
logger.addHandler(hdlr=ch)
logger.setLevel(level=logging.DEBUG)

接下来就可以输入日志信息了:

logger.debug(msg="this is a debug message")
logger.info(msg="this is an info message")
logger.warning(msg="this is a warning message")
logger.error(msg="this is an error message")
logger.critical(msg="this is a critical message")

效果图如下:

图片

完整代码如下:

import logging
import coloredlogs
import sys


## 配置 logger
logging.basicConfig()
logger = logging.getLogger(name='mylogger')

coloredlogs.install(logger=logger)
logger.propagate = False

## 配置 颜色
coloredFormatter = coloredlogs.ColoredFormatter(
fmt='[%(name)s] %(asctime)s %(funcName)s %(lineno)-3d %(message)s',
level_styles=dict(
debug=dict(color='white'),
info=dict(color='blue'),
warning=dict(color='yellow', bright=True),
error=dict(color='red', bold=True, bright=True),
critical=dict(color='black', bold=True, background='red'),
),
field_styles=dict(
name=dict(color='white'),
asctime=dict(color='white'),
funcName=dict(color='white'),
lineno=dict(color='white'),
)
)

## 配置 StreamHandler
ch = logging.StreamHandler(stream=sys.stdout)
ch.setFormatter(fmt=coloredFormatter)
logger.addHandler(hdlr=ch)
logger.setLevel(level=logging.DEBUG)

## output
logger.debug(msg="this is a debug message")
logger.info(msg="this is an info message")
logger.warning(msg="this is a warning message")
logger.error(msg="this is an error message")
logger.critical(msg="this is a critical message")
责任编辑:武晓燕 来源: Python七号
相关推荐

2011-04-29 10:36:40

彩色照片打印误区

2011-11-11 21:23:02

打印机应用技巧

2011-05-06 10:52:16

彩色激光打印机选购指南

2011-08-02 14:51:23

爱普生大幅打印机

2011-08-14 23:26:30

激光打印机常见问题

2012-02-01 15:14:03

惠普喷墨打印机

2011-04-29 17:16:55

富士施乐SLED彩色打印技术

2011-06-14 22:25:05

OKI激光打印机

2011-05-07 09:26:13

大幅面彩色喷墨打印机打印头保养

2011-07-05 11:18:21

喷墨打印解决方案

2011-09-01 17:08:46

爱普生喷墨打印机

2011-06-21 10:00:39

惠普打印机行情

2011-05-07 10:16:34

彩色激光打印机感光方式成像原理

2011-05-06 14:53:50

照片打印打印误区

2011-05-03 17:09:15

彩色照片打印误区

2011-11-23 13:13:59

惠普激光打印机

2021-01-15 19:10:32

日志打印原则

2021-03-04 09:11:57

日志开发打印

2011-07-06 09:49:58

激光打印机用户体验

2012-01-13 13:06:53

激光打印机采购指南
点赞
收藏

51CTO技术栈公众号