import os.path
import sys
from datetime import date, timedelta, datetime
from loguru import logger
from pathlib import Path
from utils.path_utils import log_dir
class Local:
# 日期常量
now = datetime.now()
today = date.today()
yesterday = (today - timedelta(days=1)).strftime("%Y-%m-%d")
tomorrow = (today + timedelta(days=1)).strftime("%Y-%m-%d")
@staticmethod
def init_logger(platform: str, mode: str, log_level: str = "INFO", log_to_console: bool = False,
rotation: str = "00:00", retention: str = "10 days"):
"""
初始化日志记录器
:param platform: 平台名称,用于区分日志目录
:param mode: 运行环境(如 prod/test/dev)
:param log_level: 日志级别(如 INFO、DEBUG)
:param log_to_console: 是否同时输出到控制台
:param rotation: 日志文件切分策略(默认每天 00:00)
:param retention: 日志保留时间(默认10天)
"""
# 创建日志目录
log_path = Path(f"{log_dir}/{platform}")
log_path.mkdir(parents=True, exist_ok=True)
# 设置日志文件名
log_filename = f"{platform}-{mode}-{Local.today.strftime('%Y-%m-%d')}.log"
log_file_path = os.path.join(log_dir,log_filename)
# 清除默认 handler
logger.remove()
# 添加文件日志 handler
logger.add(
str(log_file_path),
level=log_level.upper(),
rotation=rotation,
retention=retention,
encoding="utf-8",
enqueue=True
)
# 可选:输出到控制台
if log_to_console:
logger.add(
sink=sys.stdout,
level=log_level.upper(),
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
)
return logger