64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
"""
|
||
Creative Studio 日志配置
|
||
"""
|
||
import logging
|
||
import sys
|
||
from pathlib import Path
|
||
from logging.handlers import RotatingFileHandler
|
||
from app.config import settings
|
||
|
||
|
||
def setup_logging():
|
||
"""配置应用日志"""
|
||
|
||
# 创建日志目录
|
||
log_path = Path(settings.log_file)
|
||
log_path.parent.mkdir(parents=True, exist_ok=True)
|
||
|
||
# 配置根日志记录器
|
||
root_logger = logging.getLogger()
|
||
root_logger.setLevel(getattr(logging, settings.log_level.upper()))
|
||
|
||
# 清除现有处理器
|
||
root_logger.handlers.clear()
|
||
|
||
# 日志格式
|
||
formatter = logging.Formatter(
|
||
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||
datefmt='%Y-%m-%d %H:%M:%S'
|
||
)
|
||
|
||
# 控制台处理器
|
||
console_handler = logging.StreamHandler(sys.stdout)
|
||
console_handler.setLevel(logging.INFO)
|
||
console_handler.setFormatter(formatter)
|
||
root_logger.addHandler(console_handler)
|
||
|
||
# 文件处理器(带轮转)
|
||
file_handler = RotatingFileHandler(
|
||
settings.log_file,
|
||
maxBytes=10 * 1024 * 1024, # 10 MB
|
||
backupCount=5,
|
||
encoding='utf-8'
|
||
)
|
||
file_handler.setLevel(getattr(logging, settings.log_level.upper()))
|
||
file_handler.setFormatter(formatter)
|
||
root_logger.addHandler(file_handler)
|
||
|
||
|
||
def get_logger(name: str) -> logging.Logger:
|
||
"""
|
||
获取日志记录器
|
||
|
||
Args:
|
||
name: 日志记录器名称(通常使用 __name__)
|
||
|
||
Returns:
|
||
配置好的日志记录器
|
||
"""
|
||
return logging.getLogger(name)
|
||
|
||
|
||
# 初始化日志
|
||
setup_logging()
|