requestLogger function

Middleware requestLogger(
  1. AstraLogger logger
)

Middleware that logs requests using the provided logger.

Implementation

Middleware requestLogger(AstraLogger logger) {
  return (Handler innerHandler) {
    return (Request request) async {
      final startTime = DateTime.now();

      try {
        final response = await innerHandler(request);
        final duration = DateTime.now().difference(startTime);
        logger.info(
          '${request.method} ${request.url.path} [${response.statusCode}] (${duration.inMilliseconds}ms)',
        );
        return response;
      } catch (error, stackTrace) {
        final duration = DateTime.now().difference(startTime);
        logger.error(
          '${request.method} ${request.url.path} [ERROR] (${duration.inMilliseconds}ms)',
          error,
          stackTrace,
        );
        rethrow;
      }
    };
  };
}