123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import sys
- from datetime import date, timedelta, datetime
- from loguru import logger
- from pathlib import Path
- 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 = "prod", 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_dir = Path(f"./log_store/{platform}")
- log_dir.mkdir(parents=True, exist_ok=True)
- # 设置日志文件名
- log_filename = f"{platform}-{mode}-{Local.today.strftime('%Y-%m-%d')}.log"
- log_file_path = 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="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level}</level> | {message}"
- )
- return logger
|