Project-I/lib/logger.py

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)