彩色日志可以加快调试的速度,让程序中发生的事情变得有迹可循。这里分享4个技巧,可以让 Python 在控制台输出彩色的日志。
比较简单的办法,类似于print()函数自定义内容颜色。另外3种方式需要安装第三方模块:
-
colorlog
-
ColorInfo
-
coloredlogs
模块安装
如果未安装,pycharm中会标红,鼠标放上去点击安装即可
项目主页
https://pypi.org/project/ + 模块名
比如ColorInfo的主页 https://pypi.org/project/ColorInfo/
大家可以去主页了解具体的内容
一. 自定义内容颜色
如果不想安装第三方模块,可以简单一点自定义内容颜色
自定内容颜色的格式
logging.info("\033[显示方式;前景颜色;背景颜色m"+ "日志内容" +"\033[0m")
下面是脚本
import logging
class LogColor:
# logging日志格式设置
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s: %(message)s')
@staticmethod
def info(message: str):
# info级别的日志,绿色
logging.info("\033[0;32m" + message + "\033[0m")
@staticmethod
def warning(message: str):
# warning级别的日志,黄色
logging.warning("\033[0;33m" + message + "\033[0m")
@staticmethod
def error(message: str):
# error级别的日志,红色
logging.error("\033[0;31m"+"-" * 23 + '\n| ' + message + "\033[0m" + "\n" + "└"+"-" * 55)
@staticmethod
def debug(message: str):
# debug级别的日志,灰色
logging.debug("\033[0;37m" + message + "\033[0m")
if __name__ == '__main__':
# 测试代码
LogColor.info("info日志")
LogColor.warning("warning日志")
LogColor.error("error日志")
LogColor.debug("debug日志")
效果如下图所示
二. colorlog
顾名思义,它的作用就是为 Python 日志记录模块的输出添加颜色。
使用自定义日志级别
比如colorlog.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')
运行之后的效果
配合logging使用
import logging
import colorlog
class LogHandler(object):
def __init__(self,filename, level=logging.INFO):
self.logger = logging.getLogger(filename)
self.log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
formatter = colorlog.ColoredFormatter(
'%(log_color)s%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s',
log_colors=self.log_colors_config)
# 设置日志级别
self.logger.setLevel(level)
# 往屏幕上输出
console_handler = logging.StreamHandler()
# 输出到文件
file_handler = logging.FileHandler(filename=filename, mode='a', encoding='utf8')
file_formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s')
# 设置屏幕上显示的格式
console_handler.setFormatter(formatter)
# 设置写入文件的格式
file_handler.setFormatter(file_formatter)
# 把对象加到logger里
self.logger.addHandler(console_handler)
self.logger.addHandler(file_handler)
INFO = LogHandler('info.log',level=logging.INFO)
ERROR = LogHandler('error.log',level=logging.ERROR)
WARNING = LogHandler('warning.log',level=logging.WARNING)
DEBUG = LogHandler('debug.log',level=logging.DEBUG)
if __name__ == '__main__':
INFO.logger.info("测试info")
ERROR.logger.error("error")
WARNING.logger.warning("warning")
DEBUG.logger.debug("debug")
效果如下图所示
三. ColorInfo
ColorInfo 是一个使用Python3编写的简单的彩色日志工具,主要特性:
-
使用简单
-
彩色输出
-
中文注释
-
支持全部Python3版本(>=3.0)
from ColorInfo import ColorLogger
logger = ColorLogger()
logger.info("1", "2")
logger.debug("3", "4")
logger.warning("5")
logger.error("6", "7", "yes")
效果如下图所示
四. coloredlogs
简单使用
import coloredlogs, logging
# Create a logger object.
logger = logging.getLogger(__name__)
coloredlogs.install(level='DEBUG')
coloredlogs.install(level='DEBUG', logger=logger)
# Some examples.
logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.error("this is an error message")
logger.critical("this is a critical message")
效果如下图所示
配合logging使用
可以自定义颜色等
import logging
import coloredlogs
import sys
## 配置
logger logging.basicConfig()
logger = logging.getLogger(name='mylogger')
coloredlogs.install(logger=logger)
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'),
)
)
## 配置 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学习资料和公开课,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。如果需要的话扫描下方二维码免费获得,让我们一起学习!
**以上资料,想要入门Python ,或者正在学习 Python 的同学们如果需要可以[点击这里]领取
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、清华编程大佬出品《漫画看学Python》
用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。
配套600集视频:
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。