""" 日志配置 """ import logging import sys from typing import Any import structlog from structlog.stdlib import LoggerFactory from app.core.config import get_settings settings = get_settings() def setup_logging(): """ 配置日志系统 """ # 设置日志级别 log_level = getattr(logging, settings.LOG_LEVEL.upper(), logging.INFO) # 配置标准库日志 logging.basicConfig( format="%(message)s", stream=sys.stdout, level=log_level, ) # 配置处理器 processors = [ structlog.stdlib.filter_by_level, structlog.stdlib.add_logger_name, structlog.stdlib.add_log_level, structlog.stdlib.PositionalArgumentsFormatter(), structlog.processors.TimeStamper(fmt="iso"), structlog.processors.StackInfoRenderer(), structlog.processors.format_exc_info, structlog.processors.UnicodeDecoder(), ] # 根据配置选择输出格式 if getattr(settings, "LOG_FORMAT", "text") == "json": processors.append(structlog.processors.JSONRenderer()) else: processors.append(structlog.dev.ConsoleRenderer()) # 配置 structlog structlog.configure( processors=processors, context_class=dict, logger_factory=LoggerFactory(), cache_logger_on_first_use=True, ) # 设置日志 setup_logging() # 获取日志器 def get_logger(name: str = __name__) -> Any: """ 获取日志器 Args: name: 日志器名称 Returns: 日志器实例 """ return structlog.get_logger(name) # 默认日志器 logger = get_logger("app")