FastAPI集成Azure OpenTelemetry日志器时日志级别映射错误问题
FastAPI集成Azure OpenTelemetry日志器时日志级别映射错误问题
我的FastAPI应用日志目前会写入Azure Log Analytics的AppServiceConsoleLogs表中。我通过以下类形式的配置初始化日志器(LOGGING_CONFIG是一个日志配置类):
class ApiLoggerConfig(BaseModel): """Logging configuration to be set for all APIs.""" formatters: dict = { "uvicorn": { "()": "uvicorn.logging.DefaultFormatter", "fmt": "%(levelprefix)s %(asctime)s %(name)s:%(lineno)d: %(message)s", "datefmt": DATEFMT, }, "access": { "()": "uvicorn.logging.AccessFormatter", "fmt": '%(levelprefix)s %(asctime)s %(name)s: %(client_addr)s - "%(request_line)s" %(status_code)s', "datefmt": DATEFMT, }, } handlers: dict = { "uvicorn": { "formatter": "uvicorn", "class": "logging.StreamHandler", "stream": "ext://sys.stderr", }, "access": { "formatter": "access", "class": "logging.StreamHandler", "stream": "ext://sys.stdout", }, } loggers: dict = { "uvicorn": {"handlers": ["uvicorn"], "level": LOG_LEVEL, "propagate": False}, "uvicorn.error": {"level": LOG_LEVEL}, "uvicorn.access": { "handlers": ["access"], "level": LOG_LEVEL, "propagate": False, }, } def add_logger( self, name: str, handler: str = "default", propagate: bool = False, ): self.loggers[name] = { "handlers": [handler], "level": self.LOG_LEVEL, "propagate": propagate, } def _setup_logging(app: FastAPI): LOGGING_CONFIG = ApiLoggerConfig() # Load Azure logging config for cloud setup only if os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"): from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor # set metrics extractor to root configure_azure_monitor() FastAPIInstrumentor.instrument_app(app) LOGGING_CONFIG.add_logger(__name__) dictConfig(LOGGING_CONFIG) return logging.getLogger(__name__) app = FastAPI() logger = _setup_logging(app) @app.get("/", response_model=HealthResponse) async def health() -> Dict[str, str]: """Simple heath check endpoint. Returns: The response follows the provided HealthResponse schema. """ logger.info("I am healthy") return {"message": "API running."}
但现在遇到了一个奇怪的问题:所有属于__name__日志器的INFO级别日志,在Log Analytics里都被错误地标记为ERROR级别。这个配置在本地运行时完全正常,没有任何问题。

请问我哪里配置出错了?
备注:内容来源于stack exchange,提问作者Bennimi
相关产品推荐
相关产品推荐

