49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
import logging
|
|
import os
|
|
from datetime import datetime
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
|
|
from app.config import LOG_LEVEL, LOG_DIR
|
|
|
|
# 确保日志目录存在
|
|
os.makedirs(LOG_DIR, exist_ok=True)
|
|
|
|
|
|
def setup_logger(name: str) -> logging.Logger:
|
|
"""设置日志记录器"""
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(getattr(logging, LOG_LEVEL))
|
|
|
|
# 避免重复添加处理器
|
|
if logger.handlers:
|
|
return logger
|
|
|
|
# 日志格式
|
|
formatter = logging.Formatter(
|
|
"[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S"
|
|
)
|
|
|
|
# 控制台处理器
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setFormatter(formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 文件处理器(按日期分割)
|
|
log_file = os.path.join(LOG_DIR, "app.log")
|
|
file_handler = TimedRotatingFileHandler(
|
|
log_file,
|
|
when="midnight",
|
|
interval=1,
|
|
backupCount=30,
|
|
encoding="utf-8"
|
|
)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|
|
|
|
|
|
# 创建日志记录器
|
|
logger = setup_logger("app")
|