"""Sample FastAPI owslogger setup and usage.""" import logging.config from typing import Any import uvicorn from fastapi import FastAPI from starlette.middleware import Middleware from starlette.requests import Request from owslogger.asgi import RequestLoggingMiddleware # Set config settings SERVICE_NAME = "ows-demo" SERVICE_VERSION = "0.1.0" ENVIRONMENT = "qa" # Configure logging logging.config.dictConfig( { "version": 1, "disable_existing_loggers": False, "formatters": { "json": { "()": "owslogger.logger.DDJsonFormatter", "service_name": SERVICE_NAME, "service_version": SERVICE_VERSION, "env": ENVIRONMENT, } }, "handlers": { "stream": { "level": "INFO", "class": "logging.StreamHandler", "formatter": "json", }, }, "loggers": { "": { "handlers": ["stream"], "level": "INFO", }, }, } ) # Using logger logger = logging.getLogger(__name__) # Create Starlette / FastAPI application app = FastAPI( middleware=[ Middleware(RequestLoggingMiddleware, logger=logger), ], ) @app.get("/hello/") async def index(request: Request) -> Any: """Hello endpoint.""" return {"hello": "world"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000, access_log=False, log_config=None)