Project02/AIGC/Utils/AIGCLog.py
2025-06-05 19:55:37 +08:00

73 lines
2.6 KiB
Python

from datetime import datetime
import logging
from logging.handlers import TimedRotatingFileHandler
import sys
class AIGCLog:
def __init__(self, name="系统", log_file = "system.log"):
"""
初始化日志系统
:param name: 日志记录器名称(显示在日志中的模块名)
:param log_file: 日志文件路径
"""
self.logger = logging.getLogger(name)
self.logger.propagate = False
self.logger.setLevel(logging.DEBUG)
if not self.logger.handlers:
self.logger.handlers.clear() # 清除现有处理器
formatter = self._create_custom_formatter()
console_handler = self._create_console_handler(formatter)
file_handler = self._create_file_handler(log_file, formatter)
self.logger.addHandler(console_handler)
self.logger.addHandler(file_handler)
def _create_custom_formatter(self):
#创建自定义的日志格式
class AITimeFormatter(logging.Formatter):
def formatTime(self, record, datefmt=None):
ct = datetime.fromtimestamp(record.created)
tenth_second = int(record.msecs / 100)
return f"{ct:%Y-%m-%d %H:%M:%S}, {tenth_second}"
return AITimeFormatter(
fmt='[%(asctime)s][%(name)s] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
def _create_console_handler(self, formatter):
#控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
return console_handler
def _create_file_handler(self, log_file, formatter):
#创建文件处理爱
file_handler = TimedRotatingFileHandler(
filename=log_file,
when='midnight',
interval=1,
backupCount=7,
encoding='utf-8'
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
return file_handler
def log(self, level, msg):
if level == logging.DEBUG:
self.logger.debug(msg)
elif level == logging.INFO:
self.logger.info(msg)
elif level == logging.WARNING:
self.logger.warning(msg)
elif level == logging.ERROR:
self.logger.error(msg)
elif level == logging.CRITICAL:
self.logger.critical(msg)
else:
self.logger.info(msg) # 默认使用INFO级别
if __name__ == "__main__":
#初始化日志系统
logger = AIGCLog(name = "系统log", log_file = "system.log")