Skip to content

Instantly share code, notes, and snippets.

@adam-fowler
Created September 23, 2019 16:53
Show Gist options
  • Save adam-fowler/69897480ce8b78bb445a10b218b0c463 to your computer and use it in GitHub Desktop.
Save adam-fowler/69897480ce8b78bb445a10b218b0c463 to your computer and use it in GitHub Desktop.
Logging Middleware for Vapor
import Vapor
/// Middleware for outputting all http requests and their responses
final class LoggingMiddleware : Middleware, ServiceType {
static func makeService(for container: Container) throws -> Self {
return try .init(environment: container.environment, log: container.make())
}
init(environment: Environment, log: Logger) {
self.environment = environment
self.log = log
}
func respond(to request: Request, chainingTo next: Responder) throws -> EventLoopFuture<Response> {
if environment.isRelease {
return try next.respond(to: request)
}
log.info("Request: \(request)\n")
let response = try next.respond(to: request)
return response.map { response in
self.log.info("Response: \(response)\n")
return response
}
}
let environment: Environment
let log: Logger
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment