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

标签: none

添加新评论