Средство ведения журнала Fastapi Azure Opentelemetry неправильно сопоставляет уровни LogLevels.Python

Программы на Python
Ответить
Anonymous
 Средство ведения журнала Fastapi Azure Opentelemetry неправильно сопоставляет уровни LogLevels.

Сообщение Anonymous »

Журналы моего Fastapis в настоящее время записываются в таблицу AppServiceConsoleLogs в Log Analytics, Azure. Я инициализирую свои средства ведения журнала с помощью (где 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."}

Однако журналы INFO связаны с ОШИБКОЙ LogLevel (особенно для всех журналов регистратора __name__). Установка работает локально без каких-либо проблем.
Изображение

Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»