| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from typing import Any
- from core.utils.log.aliyun_log import AliyunLogger
- from core.utils.log.local_log import Local
- from loguru._logger import Logger as LoguruLogger
- class LoggerManager:
- """
- 日志管理器
- """
- _local_loggers: dict[str, LoguruLogger] = {}
- _aliyun_loggers: dict[str, AliyunLogger] = {}
- @staticmethod
- def get_logger(
- platform: str="system",
- mode: str="crawler",
- log_to_console: bool = True
- ) -> LoguruLogger:
- key = f"{platform}_{mode}"
- if key not in LoggerManager._local_loggers:
- LoggerManager._local_loggers[key] = Local.init_logger(
- platform=platform,
- mode=mode,
- log_to_console=log_to_console
- )
- return LoggerManager._local_loggers[key]
- @staticmethod
- def get_aliyun_logger(
- platform: str = "system",
- mode: str = "crawler",
- env: str = "prod",
- project: str | None = None,
- logstore: str | None = None,
- endpoint: str | None = None,
- ) -> AliyunLogger:
- """
- :rtype: AliyunLogger
- """
- # 目的地属于缓存键,避免同一platform/mode的不同业务误用同一个Logstore。
- key = f"{platform}_{mode}_{env}_{project}_{logstore}_{endpoint}"
- if key not in LoggerManager._aliyun_loggers:
- LoggerManager._aliyun_loggers[key] = AliyunLogger(
- platform=platform,
- mode=mode,
- env=env,
- project=project,
- logstore=logstore,
- endpoint=endpoint,
- )
- return LoggerManager._aliyun_loggers[key]
|