import logging import structlog def configure_logging(log_level: str = "INFO") -> None: level = getattr(logging, log_level.upper(), logging.INFO) structlog.configure( processors=[ structlog.processors.TimeStamper(fmt="iso"), structlog.processors.add_log_level, structlog.processors.JSONRenderer(ensure_ascii=False), ], wrapper_class=structlog.make_filtering_bound_logger(level), cache_logger_on_first_use=True, ) def setup_logging(log_level: str = "INFO") -> structlog.stdlib.BoundLogger: """ 配置并返回 structlog logger 实例 Args: log_level: 日志级别,默认 INFO Returns: 配置好的 logger 实例 """ configure_logging(log_level) return structlog.get_logger() # 全局 logger 实例 logger = structlog.get_logger()