import os.path import sys from datetime import date, timedelta, datetime from loguru import logger from pathlib import Path from utils.project_paths 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