Skip to content

Commit af922e2

Browse files
committed
notifications
1 parent 60aa9f6 commit af922e2

File tree

3 files changed

+45
-19
lines changed

3 files changed

+45
-19
lines changed

services/notifications/src/simcore_service_notifications/core/application.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
22

33
from fastapi import FastAPI
4+
from servicelib.fastapi.lifespan_utils import Lifespan
45
from servicelib.fastapi.monitoring import (
56
initialize_prometheus_instrumentation,
67
)
@@ -12,7 +13,6 @@
1213
initialize_fastapi_app_tracing,
1314
setup_tracing,
1415
)
15-
from servicelib.logging_utils import setup_loggers
1616

1717
from .._meta import API_VTAG, APP_NAME, SUMMARY, VERSION
1818
from ..api.rest.routing import initialize_rest_api
@@ -22,21 +22,11 @@
2222
_logger = logging.getLogger(__name__)
2323

2424

25-
def _initialise_logger(settings: ApplicationSettings):
26-
setup_loggers(
27-
log_format_local_dev_enabled=settings.NOTIFICATIONS_VOLUMES_LOG_FORMAT_LOCAL_DEV_ENABLED,
28-
logger_filter_mapping=settings.NOTIFICATIONS_VOLUMES_LOG_FILTER_MAPPING,
29-
tracing_settings=settings.NOTIFICATIONS_TRACING,
30-
log_base_level=settings.log_level,
31-
noisy_loggers=None,
32-
)
33-
34-
35-
def create_app() -> FastAPI:
36-
settings = ApplicationSettings.create_from_envs()
37-
_logger.debug(settings.model_dump_json(indent=2))
38-
39-
_initialise_logger(settings)
25+
def create_app(
26+
settings: ApplicationSettings | None = None,
27+
logging_lifespan: Lifespan | None = None,
28+
) -> FastAPI:
29+
settings = settings or ApplicationSettings.create_from_envs()
4030

4131
assert settings.SC_BOOT_MODE # nosec
4232
app = FastAPI(
@@ -45,7 +35,7 @@ def create_app() -> FastAPI:
4535
description=SUMMARY,
4636
version=f"{VERSION}",
4737
openapi_url=f"/api/{API_VTAG}/openapi.json",
48-
lifespan=events.create_app_lifespan(),
38+
lifespan=events.create_app_lifespan(logging_lifespan=logging_lifespan),
4939
**get_common_oas_options(is_devel_mode=settings.SC_BOOT_MODE.is_devel_mode()),
5040
)
5141
override_fastapi_openapi_method(app)

services/notifications/src/simcore_service_notifications/core/events.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from fastapi import FastAPI
44
from fastapi_lifespan_manager import LifespanManager, State
5+
from servicelib.fastapi.lifespan_utils import Lifespan
56
from servicelib.fastapi.monitoring import (
67
create_prometheus_instrumentationmain_input_state,
78
prometheus_instrumentation_lifespan,
@@ -35,9 +36,13 @@ async def _settings_lifespan(app: FastAPI) -> AsyncIterator[State]:
3536
}
3637

3738

38-
def create_app_lifespan():
39+
def create_app_lifespan(
40+
logging_lifespan: Lifespan | None = None,
41+
) -> LifespanManager[FastAPI]:
3942
# WARNING: order matters
4043
app_lifespan = LifespanManager()
44+
if logging_lifespan:
45+
app_lifespan.add(logging_lifespan)
4146
app_lifespan.add(_settings_lifespan)
4247

4348
# - postgres
Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
import logging
2+
from typing import Final
3+
4+
from common_library.json_serialization import json_dumps
5+
from fastapi import FastAPI
6+
from servicelib.fastapi.logging_lifespan import setup_logging_lifespan
17
from simcore_service_notifications.core.application import create_app
8+
from simcore_service_notifications.core.settings import (
9+
ApplicationSettings,
10+
)
11+
12+
_logger = logging.getLogger(__name__)
13+
14+
_NOISY_LOGGERS: Final[tuple[str, ...]] = (
15+
"aio_pika",
16+
"aiormq",
17+
)
18+
19+
20+
def app_factory() -> FastAPI:
21+
app_settings = ApplicationSettings.create_from_envs()
22+
logging_lifespan = setup_logging_lifespan(
23+
log_format_local_dev_enabled=app_settings.NOTIFICATIONS_VOLUMES_LOG_FORMAT_LOCAL_DEV_ENABLED,
24+
logger_filter_mapping=app_settings.NOTIFICATIONS_VOLUMES_LOG_FILTER_MAPPING,
25+
tracing_settings=app_settings.NOTIFICATIONS_TRACING,
26+
log_base_level=app_settings.log_level,
27+
noisy_loggers=_NOISY_LOGGERS,
28+
)
229

3-
the_app = create_app()
30+
_logger.info(
31+
"Application settings: %s",
32+
json_dumps(app_settings, indent=2, sort_keys=True),
33+
)
34+
return create_app(settings=app_settings, logging_lifespan=logging_lifespan)

0 commit comments

Comments
 (0)