import logging
import logging.handlers
#region 日志处理
class ColoredFormatter(logging.Formatter):
# 定义颜色代码
COLORS = {
'DEBUG': '\033[94m', # 蓝色
'INFO': '\033[92m', # 绿色
'WARNING': '\033[93m', # 黄色
'ERROR': '\033[91m', # 红色
'CRITICAL': '\033[41m', # 红色背景
}
RESET = '\033[0m' # 重置颜色
def format(self, record):
# 根据日志级别选择颜色
color = self.COLORS.get(record.levelname, self.RESET)
return color + super().format(record) + self.RESET
#return super().format(record).replace(record.getMessage(), f"{color}{record.getMessage()}{self.RESET}")
def looger_handler_file():
import os
import datetime
import re
# 创建文件目录
log_dir='./logs'
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 创建文件日志
log_file=os.path.join(log_dir,'main.log')
handler_file=logging.handlers.TimedRotatingFileHandler(
filename=log_file,
when='midnight', # 间隔一天
interval=1, # 每天切割
backupCount=200, # 至少6个月的日志
encoding='utf-8'
)
handler_file.suffix='%Y-%m-%d.log'
handler_file.extMatch=re.compile(r'^\d{4}-\d{2}-\d{2}\.log$')
handler_file.setFormatter(logging.Formatter(fmt='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%Y-%m-%d %H:%M:%S'))
return handler_file
def looger_handler_console():
# 创建控制台日志
handler_console=logging.StreamHandler()
handler_console.setFormatter(ColoredFormatter(fmt='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%Y-%m-%d %H:%M:%S'))
return handler_console
logger=logging.getLogger()
logger.addHandler(looger_handler_console())
logger.addHandler(looger_handler_file())
logger.setLevel(logging.DEBUG)
#endregion