Source code for swh.graphql.middlewares.logger

# Copyright (C) 2022-2023 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

from starlette.middleware.base import BaseHTTPMiddleware

from swh.core import statsd


[docs] class LogMiddleware(BaseHTTPMiddleware): # Starlette/ASGI middleware for logging request information def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.statsd = statsd.Statsd(namespace="swh_graphql")
[docs] async def dispatch(self, request, call_next): if request.method == "POST": # This is a query request self.statsd.increment("query_total") # FIXME, add a metric for total query cost # FIXME, start a sentry transaction here with self.statsd.timed("query_seconds"): # total exec time metric (for both POST and GET) response = await call_next(request) return response