Skip to content

Commit a3781ad

Browse files
authored
♻️🐛Properly configure socketio/engineio log output (#8057)
1 parent b9a6313 commit a3781ad

File tree

8 files changed

+27
-29
lines changed

8 files changed

+27
-29
lines changed

.env-devel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ INVITATIONS_USERNAME=admin
161161
INVITATIONS_TRACING=null
162162

163163
LOG_FORMAT_LOCAL_DEV_ENABLED=1
164-
LOG_FILTER_MAPPING='{}'
164+
LOG_FILTER_MAPPING='{"gunicorn.access":[" /v0/ ", " /v0/health "], "uvicorn.access":[" / "]}'
165165

166166
NOTIFICATIONS_LOGLEVEL=INFO
167167
NOTIFICATIONS_TRACING=null

services/director-v2/src/simcore_service_director_v2/core/application.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def _set_exception_handlers(app: FastAPI):
9999
"aio_pika",
100100
"aiormq",
101101
"httpcore",
102+
"httpx",
102103
)
103104

104105

@@ -201,9 +202,7 @@ def init_app(settings: AppSettings | None = None) -> FastAPI:
201202
socketio.setup(app)
202203
notifier.setup(app)
203204

204-
if (
205-
settings.DIRECTOR_V2_COMPUTATIONAL_BACKEND.COMPUTATIONAL_BACKEND_DASK_CLIENT_ENABLED
206-
):
205+
if settings.DIRECTOR_V2_COMPUTATIONAL_BACKEND.COMPUTATIONAL_BACKEND_DASK_CLIENT_ENABLED:
207206
dask_clients_pool.setup(app, settings.DIRECTOR_V2_COMPUTATIONAL_BACKEND)
208207

209208
if computational_backend_enabled:

services/director/src/simcore_service_director/core/application.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222
from .settings import ApplicationSettings
2323

2424
_LOG_LEVEL_STEP = logging.CRITICAL - logging.ERROR
25-
_NOISY_LOGGERS: Final[tuple[str]] = ("werkzeug",)
25+
_NOISY_LOGGERS: Final[tuple[str, ...]] = (
26+
"httpcore",
27+
"httpx",
28+
"werkzeug",
29+
)
2630

2731
_logger = logging.getLogger(__name__)
2832

services/payments/src/simcore_service_payments/api/rest/_health.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ class HealthCheckError(RuntimeError):
2323
async def healthcheck(
2424
rabbitmq_client: Annotated[
2525
RabbitMQClient, Depends(get_rabbitmq_client_from_request)
26-
]
26+
],
2727
) -> str:
28-
_logger.info("Checking rabbit health check %s", rabbitmq_client.healthy)
28+
_logger.debug("Checking rabbit health check %s", rabbitmq_client.healthy)
2929
if not rabbitmq_client.healthy:
3030
raise HealthCheckError(RABBITMQ_CLIENT_UNHEALTHY_MSG)
3131

services/web/server/src/simcore_service_webserver/log.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
""" Configuration and utilities for service logging
2-
3-
"""
1+
"""Configuration and utilities for service logging"""
42

53
import logging
64

@@ -14,13 +12,14 @@
1412
"aio_pika",
1513
"aiormq",
1614
"engineio",
15+
"engineio.server",
1716
"inotify.adapters",
18-
"gunicorn.access",
1917
"openapi_spec_validator",
2018
"servicelib.aiohttp.monitoring",
19+
"socketio",
20+
"socketio.server",
2121
"sqlalchemy.engine",
2222
"sqlalchemy",
23-
"socketio",
2423
)
2524

2625

@@ -30,7 +29,7 @@ def setup_logging(
3029
slow_duration: float | None = None,
3130
log_format_local_dev_enabled: bool,
3231
logger_filter_mapping: dict,
33-
tracing_settings: TracingSettings | None
32+
tracing_settings: TracingSettings | None,
3433
):
3534
# service log level
3635
logging.basicConfig(level=level)

services/web/server/src/simcore_service_webserver/socketio/_handlers.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ async def _handler(request: web.Request) -> tuple[UserID, ProductName, str]:
7474

7575
# REDIS wrapper
7676
with managed_resource(user_id, client_session_id, app) as resource_registry:
77-
_logger.info(
78-
"socketio connection from user %s",
79-
user_id,
80-
extra=get_log_record_extra(user_id=user_id),
81-
)
8277
await resource_registry.set_socket_id(socket_id)
8378

8479
return user_id, product.name, client_session_id
@@ -129,10 +124,16 @@ async def connect(
129124
user_id, product_name, client_session_id = await auth_user_handler(
130125
environ["aiohttp.request"]
131126
)
127+
_logger.info(
128+
"%s successfully connected with %s",
129+
f"{user_id=}",
130+
f"{client_session_id=}",
131+
extra=get_log_record_extra(user_id=user_id),
132+
)
132133

133134
await _set_user_in_group_rooms(app, user_id, socket_id)
134135

135-
_logger.info("Sending set_heartbeat_emit_interval with %s", _EMIT_INTERVAL_S)
136+
_logger.debug("Sending set_heartbeat_emit_interval with %s", _EMIT_INTERVAL_S)
136137

137138
await emit(
138139
app, "SIGNAL_USER_CONNECTED", user_id, app, product_name, client_session_id
@@ -170,7 +171,7 @@ async def disconnect(socket_id: SocketID, app: web.Application) -> None:
170171
with log_context(
171172
_logger,
172173
logging.INFO,
173-
"disconnection of %s for %s",
174+
"disconnection of %s with %s",
174175
f"{user_id=}",
175176
f"{client_session_id=}",
176177
):

services/web/server/src/simcore_service_webserver/socketio/messages.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ async def _safe_emit(
5454
room=room,
5555
ignore_queue=ignore_queue,
5656
)
57-
_logger.info("emitted socketio event '%s' to room '%s'", event, room)
57+
_logger.debug("emitted socketio event '%s' to room '%s'", event, room)
5858

5959

6060
async def send_message_to_user(

services/web/server/src/simcore_service_webserver/socketio/server.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,12 @@
1919

2020

2121
async def _socketio_server_cleanup_ctx(app: web.Application) -> AsyncIterator[None]:
22-
use_logger: bool | logging.Logger = _logger
23-
2422
# SEE https://github.com/miguelgrinberg/python-socketio/blob/v4.6.1/docs/server.rst#aiohttp
25-
server_manager = AsyncAioPikaManager(
26-
url=get_rabbitmq_settings(app).dsn,
27-
logger=use_logger,
28-
)
23+
server_manager = AsyncAioPikaManager(url=get_rabbitmq_settings(app).dsn)
2924
sio_server = AsyncServer(
3025
async_mode="aiohttp",
31-
logger=use_logger,
32-
engineio_logger=False,
26+
logger=True,
27+
engineio_logger=True,
3328
client_manager=server_manager,
3429
json=JsonNamespace,
3530
)

0 commit comments

Comments
 (0)