Version 0.3.0
Some checks failed
Run linters on applied template / Python 3.13 lint and build (push) Failing after 2m36s
Some checks failed
Run linters on applied template / Python 3.13 lint and build (push) Failing after 2m36s
Changes: - fix double exception message in main request_processing span - add OpenSearch to Jaeger and OpenTelemetry Logs - add optional OpenTelemetry Logs Exporter to structlog - update deploy README
This commit is contained in:
@@ -95,11 +95,24 @@ def get_app(prefix: str = "/api") -> FastAPI:
|
||||
|
||||
application.state.config = app_config
|
||||
|
||||
exception_mapper = _get_exception_mapper(app_config.app.debug)
|
||||
logger = configure_logging(
|
||||
app_config.observability.logging,
|
||||
tracing_enabled=app_config.observability.jaeger is not None,
|
||||
)
|
||||
metrics = init_metrics()
|
||||
metrics_dep.init_dispencer(application, metrics)
|
||||
exception_mapper = _get_exception_mapper(app_config.app.debug)
|
||||
connection_manager = PostgresConnectionManager(
|
||||
master=app_config.db.master,
|
||||
replicas=app_config.db.replicas,
|
||||
logger=logger,
|
||||
application_name=f"{{project_slug}}_{VERSION}",
|
||||
)
|
||||
urls_mapper = URLsMapper(app_config.observability.prometheus.urls_mapping)
|
||||
|
||||
connection_manager_dep.init_dispencer(application, connection_manager)
|
||||
metrics_dep.init_dispencer(application, metrics)
|
||||
logger_dep.init_dispencer(application, logger)
|
||||
|
||||
application.add_middleware(
|
||||
ObservabilityMiddleware,
|
||||
exception_mapper=exception_mapper,
|
||||
@@ -108,7 +121,7 @@ def get_app(prefix: str = "/api") -> FastAPI:
|
||||
)
|
||||
application.add_middleware(
|
||||
ExceptionHandlerMiddleware,
|
||||
debug=[False], # reinitialized on startup
|
||||
debug=[app_config.app.debug],
|
||||
exception_mapper=exception_mapper,
|
||||
)
|
||||
|
||||
@@ -122,20 +135,10 @@ async def lifespan(application: FastAPI):
|
||||
Initializes database connection in pass_services_dependencies middleware.
|
||||
"""
|
||||
app_config: {{ProjectName}}Config = application.state.config
|
||||
loggers_dict = {logger_config.filename: logger_config.level for logger_config in app_config.logging.files}
|
||||
logger = configure_logging(app_config.logging.level, loggers_dict)
|
||||
logger = logger_dep.obtain(application)
|
||||
|
||||
await logger.ainfo("application is being configured", config=app_config.to_order_dict())
|
||||
|
||||
connection_manager = PostgresConnectionManager(
|
||||
master=app_config.db.master,
|
||||
replicas=app_config.db.replicas,
|
||||
logger=logger,
|
||||
application_name=f"{{project_slug}}_{VERSION}",
|
||||
)
|
||||
connection_manager_dep.init_dispencer(application, connection_manager)
|
||||
logger_dep.init_dispencer(application, logger)
|
||||
|
||||
for middleware in application.user_middleware:
|
||||
if middleware.cls == ExceptionHandlerMiddleware:
|
||||
middleware.kwargs["debug"][0] = app_config.app.debug
|
||||
|
||||
Reference in New Issue
Block a user