84 lines
2.1 KiB
Python
84 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
日志配置模块
|
|
提供统一的日志格式和配置
|
|
"""
|
|
|
|
import logging
|
|
import os
|
|
from pathlib import Path
|
|
from datetime import datetime
|
|
|
|
|
|
def setup_logger(config):
|
|
"""
|
|
设置日志记录器
|
|
|
|
Args:
|
|
config: 配置字典,包含日志相关配置
|
|
|
|
Returns:
|
|
logger: 配置好的日志记录器
|
|
"""
|
|
# 获取日志配置
|
|
log_level = config.get('log_level', 'INFO')
|
|
log_base_dir = config.get('log_base_dir', 'logs')
|
|
|
|
# 创建日志目录
|
|
log_dir = Path(log_base_dir)
|
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
# 创建日志文件名(包含时间戳)
|
|
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
|
model_name = config.get('model_name', 'stden')
|
|
log_filename = f"{model_name}_{timestamp}.log"
|
|
log_path = log_dir / log_filename
|
|
|
|
# 创建日志记录器
|
|
logger = logging.getLogger('STDEN')
|
|
logger.setLevel(getattr(logging, log_level.upper()))
|
|
|
|
# 清除现有的处理器
|
|
logger.handlers.clear()
|
|
|
|
# 创建文件处理器
|
|
file_handler = logging.FileHandler(log_path, encoding='utf-8')
|
|
file_handler.setLevel(getattr(logging, log_level.upper()))
|
|
|
|
# 创建控制台处理器
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(getattr(logging, log_level.upper()))
|
|
|
|
# 创建格式化器
|
|
formatter = logging.Formatter(
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|
)
|
|
|
|
# 设置格式化器
|
|
file_handler.setFormatter(formatter)
|
|
console_handler.setFormatter(formatter)
|
|
|
|
# 添加处理器
|
|
logger.addHandler(file_handler)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 记录日志配置信息
|
|
logger.info(f"日志文件路径: {log_path}")
|
|
logger.info(f"日志级别: {log_level}")
|
|
|
|
return logger
|
|
|
|
|
|
def get_logger(name='STDEN'):
|
|
"""
|
|
获取已配置的日志记录器
|
|
|
|
Args:
|
|
name: 日志记录器名称
|
|
|
|
Returns:
|
|
logger: 日志记录器
|
|
"""
|
|
return logging.getLogger(name)
|