63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
"""日志配置 — 按天拆分 + 当前日志"""
|
|
import logging
|
|
import os
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
from datetime import datetime
|
|
|
|
LOG_DIR = os.getenv("LOG_DIR", os.path.join(os.path.dirname(__file__), "logs"))
|
|
|
|
|
|
def setup_logger(name="mokeetext"):
|
|
"""配置日志:一天一个文件 + current.log 始终为当天日志"""
|
|
os.makedirs(LOG_DIR, exist_ok=True)
|
|
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# 避免重复添加 handler
|
|
if logger.handlers:
|
|
return logger
|
|
|
|
# 格式
|
|
formatter = logging.Formatter(
|
|
"[%(asctime)s] %(levelname)s %(name)s | %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
)
|
|
|
|
# 按天轮转:每天午夜切一个新文件,保留 30 天
|
|
daily_handler = TimedRotatingFileHandler(
|
|
filename=os.path.join(LOG_DIR, "mokeetext.log"),
|
|
when="midnight",
|
|
interval=1,
|
|
backupCount=30,
|
|
encoding="utf-8",
|
|
)
|
|
daily_handler.suffix = "%Y-%m-%d"
|
|
daily_handler.setFormatter(formatter)
|
|
daily_handler.setLevel(logging.INFO)
|
|
logger.addHandler(daily_handler)
|
|
|
|
# 当前日志软链接(始终指向今天的日志)
|
|
current_log = os.path.join(LOG_DIR, "current.log")
|
|
|
|
# 控制台也输出
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setFormatter(formatter)
|
|
console_handler.setLevel(logging.INFO)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 记录日志文件路径
|
|
logger.info(f"日志目录: {LOG_DIR}")
|
|
|
|
return logger
|
|
|
|
|
|
def get_log_path():
|
|
"""返回今天的日志文件路径"""
|
|
today = datetime.now().strftime("%Y-%m-%d")
|
|
return os.path.join(LOG_DIR, f"mokeetext.log{today}")
|
|
|
|
|
|
# 单例
|
|
logger = setup_logger()
|