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

 更新时间:2024年03月11日 10:32:31   作者:搬砖的诗人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控制台彩色显示日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python timeit模块的使用实践

    Python timeit模块的使用实践

    timeit 模块是 Python 标准库中的模块,无需安装,直接导入就可以使用。这篇文章主要介绍了Python timeit模块的使用,需要的朋友可以参考下
    2020-01-01
  • Python中json常见四种用法举例

    Python中json常见四种用法举例

    这篇文章主要给大家介绍了关于Python中json常见四种用法举例的相关资料,众所周知JSON是一种轻量级的数据交换格式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Django之腾讯云短信的实现

    Django之腾讯云短信的实现

    这篇文章主要介绍了Django之腾讯云短信的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 浅谈TensorFlow之稀疏张量表示

    浅谈TensorFlow之稀疏张量表示

    这篇文章主要介绍了浅谈TensorFlow之稀疏张量表示,具有很好的参考就价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现检测文件MD5值的方法示例

    Python实现检测文件MD5值的方法示例

    这篇文章主要介绍了Python实现检测文件MD5值的方法,涉及Python针对大文件的读取、判断、运算、加密等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python实现扫码工具的示例代码

    Python实现扫码工具的示例代码

    这篇文章主要介绍了Python实现扫码工具的示例代码,代码简单易懂对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python中字典的基础介绍及常用操作总结

    Python中字典的基础介绍及常用操作总结

    字典也是python的数据类型中的一种,它由许多键值对组成,它是一种可变容器模型,一般情况下键是唯一的,字典支持嵌套,下面这篇文章主要给大家介绍了关于Python中字典的基础介绍及常用操作,需要的朋友可以参考下
    2021-09-09
  • Python中parsel两种获取数据方式小结

    Python中parsel两种获取数据方式小结

    本文主要介绍了Python中parsel两种获取数据方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Python内建类型float源码学习

    Python内建类型float源码学习

    这篇文章主要为大家介绍了Python内建类型float源码学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python安装Imaging报错:The _imaging C module is not installed问题解决方法

    Python安装Imaging报错:The _imaging C module is not installed问题解决

    这篇文章主要介绍了Python安装Imaging报错:The _imaging C module is not installed问题解决方法,原来是PIL库的库文件没有加到系统中导致老是提示这个错误,需要的朋友可以参考下
    2014-08-08

最新评论