python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python colorlog控制台彩色显示日志

Python使用colorlog实现控制台管理日志多种颜色显示

作者:搬砖的诗人Z

colorlog 是一个 Python 日志库,它可以让你在控制台中以彩色的方式显示日志消息,使得日志更易于阅读和理解,下面就跟随小编一起来看看它的具体应用吧

colorlog 是一个 Python 日志库,它可以让你在控制台中以彩色的方式显示日志消息,使得日志更易于阅读和理解。该库允许你为不同级别的日志消息设置不同的颜色,比如将错误消息显示为红色,信息消息显示为绿色等等。

效果图

实现代码

下面是我个人封装的一个日志记录库:

import logging
import colorlog 
import os
from logging import handlers

log_colors_config = {
    'DEBUG': 'cyan',
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'red',
}

class LogHelper(object):
    level_relations = {
        'debug':logging.DEBUG,
        'info':logging.INFO,
        'warning':logging.WARNING,
        'error':logging.ERROR,
        'crit':logging.CRITICAL
    }#日志级别关系映射

    def __init__(self,filename,level='info',when='D',backCount=3):
        mexist=os.path.exists("log")
        if mexist == False:
            os.makedirs("log")

        self.logger = logging.getLogger(filename)
        ffmt='[%(asctime)s] [%(process)d] [%(levelname)s] - %(module)s.%(funcName)s (%(filename)s:%(lineno)d) - %(message)s'
        file_format_str = logging.Formatter(ffmt)#设置日志格式
        fmt='%(log_color)s[%(asctime)s] - %(message)s'      
        format_str = colorlog.ColoredFormatter(fmt,log_colors=log_colors_config)
        self.logger.setLevel(self.level_relations.get(level))#设置日志级别
        sh = logging.StreamHandler()#往屏幕上输出
        sh.setFormatter(format_str) #设置屏幕上显示的格式
        th = handlers.TimedRotatingFileHandler(filename="log/"+filename,when=when,backupCount=backCount,encoding='utf-8')#往文件里写入#指定间隔时间自动生成文件的处理器
        #实例化TimedRotatingFileHandler
        #interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:
        # S 秒
        # M 分
        # H 小时、
        # D 天、
        # W 每星期(interval==0时代表星期一)
        # midnight 每天凌晨
        th.setFormatter(file_format_str)#设置文件里写入的格式
        self.logger.addHandler(sh) #把对象加到logger里
        self.logger.addHandler(th)
if __name__ == '__main__':
    log = Logger('Log/all.log',level='debug')
    log.logger.debug('debug')
    log.logger.info('info')
    log.logger.warning('警告')
    log.logger.error('报错')
    log.logger.critical('严重')
    Logger('error.log', level='error').logger.error('error')

使用方法

from time import sleep
import time
from common import LogHelper

logger = None  #日志
dataSteps = None #步骤
mapList = None   #映射关系
def main():
	global logger
	logger = LogHelper.LogHelper("test.log")
	logger.logger.info('启动执行')
	config = Config.readConfig(logger.logger)
	if config == None:
		logger.logger.error('读取配置文件失败,请检查配置文件!')
		return
	ConfigCacheInfo.configDict = config

方法补充

除了上文的方法,小编还为大家整理了其他控制台日志彩色显示的方法,希望对大家有所帮助

使用logger 同时输出到控制台(颜色不同)和文件

import logging
import colorlog


log_colors_config = {
    'DEBUG': 'white',  # cyan white
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'bold_red',
}


logger = logging.getLogger('logger_name')

# 输出到控制台
console_handler = logging.StreamHandler()
# 输出到文件
file_handler = logging.FileHandler(filename='test.log', mode='a', encoding='utf8')

# 日志级别,logger 和 handler以最高级别为准,不同handler之间可以不一样,不相互影响
logger.setLevel(logging.DEBUG)
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.INFO)

# 日志输出格式
file_formatter = logging.Formatter(
    fmt='[%(asctime)s.%(msecs)03d] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d  %H:%M:%S'
)
console_formatter = colorlog.ColoredFormatter(
    fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d  %H:%M:%S',
    log_colors=log_colors_config
)
console_handler.setFormatter(console_formatter)
file_handler.setFormatter(file_formatter)

# 重复日志问题:
# 1、防止多次addHandler;
# 2、loggername 保证每次添加的时候不一样;
# 3、显示完log之后调用removeHandler
if not logger.handlers:
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

console_handler.close()
file_handler.close()


if __name__ == '__main__':
    logger.debug('debug')
    logger.info('info')
    logger.warning('warning')
    logger.error('error')
    logger.critical('critical')

结果如下

到此这篇关于Python使用colorlog实现控制台管理日志多种颜色显示的文章就介绍到这了,更多相关Python colorlog控制台彩色显示日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文