loggingMiddleware function
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;
}
};
};
}