local_log.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import os.path
  2. import sys
  3. from datetime import date, timedelta, datetime
  4. from loguru import logger
  5. from pathlib import Path
  6. from utils.path_utils import log_dir
  7. class Local:
  8. # 日期常量
  9. now = datetime.now()
  10. today = date.today()
  11. yesterday = (today - timedelta(days=1)).strftime("%Y-%m-%d")
  12. tomorrow = (today + timedelta(days=1)).strftime("%Y-%m-%d")
  13. @staticmethod
  14. def init_logger(platform: str, mode: str, log_level: str = "INFO", log_to_console: bool = False,
  15. rotation: str = "00:00", retention: str = "10 days"):
  16. """
  17. 初始化日志记录器
  18. :param platform: 平台名称,用于区分日志目录
  19. :param mode: 运行环境(如 prod/test/dev)
  20. :param log_level: 日志级别(如 INFO、DEBUG)
  21. :param log_to_console: 是否同时输出到控制台
  22. :param rotation: 日志文件切分策略(默认每天 00:00)
  23. :param retention: 日志保留时间(默认10天)
  24. """
  25. # 创建日志目录
  26. log_path = Path(f"{log_dir}/{platform}")
  27. log_path.mkdir(parents=True, exist_ok=True)
  28. # 设置日志文件名
  29. log_filename = f"{platform}-{mode}-{Local.today.strftime('%Y-%m-%d')}.log"
  30. log_file_path = os.path.join(log_dir,log_filename)
  31. # 清除默认 handler
  32. logger.remove()
  33. # 添加文件日志 handler
  34. logger.add(
  35. str(log_file_path),
  36. level=log_level.upper(),
  37. rotation=rotation,
  38. retention=retention,
  39. encoding="utf-8",
  40. enqueue=True
  41. )
  42. # 可选:输出到控制台
  43. if log_to_console:
  44. logger.add(
  45. sink=sys.stdout,
  46. level=log_level.upper(),
  47. format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level}</level> | {message}"
  48. )
  49. return logger