在pycharm的终端控制台,打印出来的日志记录都是红色的,看着很不顺眼,因此希望能够自定义日志颜色。
实现过程:
由于控制台是一个终端,终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
一、结合转义序列打印不同颜色的日志记录
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
import time
class Logger(object):
def __init__(self, custom_color=True):
"""
构造日志器和处理器,以及设定常用的方法
:param custom_color: 是否自定义颜色开关
"""
self.custom_color = custom_color # 自定义颜色
try:
# 创建一个logger(初始化logger)
self.logger = logging.getLogger(__name__)
self.logger.setLevel(logging.DEBUG)
# 判断是否已存在handler,有则初始化handlers为[]
if self.logger.handlers:
self.logger.handlers = []
# 定义日志文件的路径以及名称
log_name = 'log.log'
# 创建日志文件和控制台的handler
self.fh = logging.FileHandler(log_name, encoding='utf-8')
self.ch = logging.StreamHandler()
# 定义输出格式
formatter = logging.Formatter('[%(asctime)s] - [%(name)s] - [%(levelname)s] - %(message)s')
self.fh.setFormatter(formatter)
self.ch.setFormatter(formatter)
# 定义处理器的日志级别
self.fh.setLevel(logging.INFO)
self.ch.setLevel(logging.DEBUG)
# 给logger添加handler
self.logger.addHandler(self.fh)
self.logger.addHandler(self.ch)
except Exception as e:
print("输出日志失败! %s" % e)
def record_color(self, color):
"""
给日志记录加上颜色
:param color: 颜色参数
:return:
"""
# 控制台不同的日志等级输出不同的颜色
formatter = logging.Formatter(color % '[%(asctime)s] - [%(levelname)s] - %(message)s')
# 定义handler的输出格式
self