|
2 | 2 | from asyncio import Lock |
3 | 3 | from typing import Any, ClassVar |
4 | 4 |
|
| 5 | +from common_library.json_serialization import json_dumps |
5 | 6 | from fastapi import FastAPI |
6 | 7 | from servicelib.async_utils import cancel_sequential_workers |
7 | 8 | from servicelib.fastapi import long_running_tasks |
| 9 | +from servicelib.fastapi.logging_lifespan import setup_logging_shutdown_event |
8 | 10 | from servicelib.fastapi.openapi import ( |
9 | 11 | get_common_oas_options, |
10 | 12 | override_fastapi_openapi_method, |
|
13 | 15 | initialize_fastapi_app_tracing, |
14 | 16 | setup_tracing, |
15 | 17 | ) |
16 | | -from servicelib.logging_utils import setup_loggers |
17 | 18 | from simcore_sdk.node_ports_common.exceptions import NodeNotFound |
18 | 19 |
|
19 | 20 | from .._meta import API_VERSION, API_VTAG, PROJECT_NAME, SUMMARY, __version__ |
@@ -114,41 +115,44 @@ def compose_spec(self) -> str | None: |
114 | 115 | return self._shared_store.compose_spec |
115 | 116 |
|
116 | 117 |
|
117 | | -def setup_logger(settings: ApplicationSettings): |
118 | | - setup_loggers( |
119 | | - log_format_local_dev_enabled=settings.DY_SIDECAR_LOG_FORMAT_LOCAL_DEV_ENABLED, |
120 | | - logger_filter_mapping=settings.DY_SIDECAR_LOG_FILTER_MAPPING, |
121 | | - tracing_settings=settings.DYNAMIC_SIDECAR_TRACING, |
122 | | - log_base_level=settings.log_level, |
| 118 | +def create_base_app() -> FastAPI: |
| 119 | + # settings |
| 120 | + app_settings = ApplicationSettings.create_from_envs() |
| 121 | + logging_shutdown_event = setup_logging_shutdown_event( |
| 122 | + log_format_local_dev_enabled=app_settings.DY_SIDECAR_LOG_FORMAT_LOCAL_DEV_ENABLED, |
| 123 | + logger_filter_mapping=app_settings.DY_SIDECAR_LOG_FILTER_MAPPING, |
| 124 | + tracing_settings=app_settings.DYNAMIC_SIDECAR_TRACING, |
| 125 | + log_base_level=app_settings.log_level, |
123 | 126 | noisy_loggers=_NOISY_LOGGERS, |
124 | 127 | ) |
125 | 128 |
|
126 | | - |
127 | | -def create_base_app() -> FastAPI: |
128 | | - # settings |
129 | | - settings = ApplicationSettings.create_from_envs() |
130 | | - setup_logger(settings) |
131 | | - logger.debug(settings.model_dump_json(indent=2)) |
| 129 | + logger.info( |
| 130 | + "Application settings: %s", |
| 131 | + json_dumps(app_settings, indent=2, sort_keys=True), |
| 132 | + ) |
132 | 133 |
|
133 | 134 | # minimal |
134 | | - assert settings.SC_BOOT_MODE # nosec |
| 135 | + assert app_settings.SC_BOOT_MODE # nosec |
135 | 136 | app = FastAPI( |
136 | | - debug=settings.SC_BOOT_MODE.is_devel_mode(), |
| 137 | + debug=app_settings.SC_BOOT_MODE.is_devel_mode(), |
137 | 138 | title=PROJECT_NAME, |
138 | 139 | description=SUMMARY, |
139 | 140 | version=API_VERSION, |
140 | 141 | openapi_url=f"/api/{API_VTAG}/openapi.json", |
141 | | - **get_common_oas_options(is_devel_mode=settings.SC_BOOT_MODE.is_devel_mode()), |
| 142 | + **get_common_oas_options( |
| 143 | + is_devel_mode=app_settings.SC_BOOT_MODE.is_devel_mode() |
| 144 | + ), |
142 | 145 | ) |
143 | 146 | override_fastapi_openapi_method(app) |
144 | | - app.state.settings = settings |
| 147 | + app.state.settings = app_settings |
145 | 148 |
|
146 | 149 | long_running_tasks.server.setup(app) |
147 | 150 |
|
148 | 151 | app.include_router(get_main_router(app)) |
149 | 152 |
|
150 | 153 | setup_reserved_space(app) |
151 | 154 |
|
| 155 | + app.add_event_handler("shutdown", logging_shutdown_event) |
152 | 156 | return app |
153 | 157 |
|
154 | 158 |
|
|
0 commit comments