loggingMiddleware function

Middleware loggingMiddleware()

Creates logging middleware.

Implementation

Middleware loggingMiddleware() {
  return (Handler handler) {
    return (Request request) async {
      final requestId = request.context['request_id'] ?? 'unknown';
      final start = DateTime.now();

      Log.i('${request.method} ${request.url.path} [ID: $requestId]');

      try {
        final response = await handler(request);
        final duration = DateTime.now().difference(start);

        Log.i('${request.method} ${request.url.path} [ID: $requestId] '
              '${response.statusCode} ${duration.inMilliseconds}ms');

        return response;
      } catch (e, stackTrace) {
        final duration = DateTime.now().difference(start);
        Log.e('${request.method} ${request.url.path} [ID: $requestId] '
              'ERROR ${duration.inMilliseconds}ms',
              error: e, stackTrace: stackTrace);
        rethrow;
      }
    };
  };
}