Skip to content

Instantly share code, notes, and snippets.

@adamw
Created June 7, 2019 09:32
Show Gist options
  • Save adamw/4f7918f0b3e7cd375ac5349cc0d79860 to your computer and use it in GitHub Desktop.
Save adamw/4f7918f0b3e7cd375ac5349cc0d79860 to your computer and use it in GitHub Desktop.
class LoggingSttpBackend[R[_], S](delegate: SttpBackend[R, S])
extends SttpBackend[R, S] with StrictLogging {
override def send[T](request: Request[T, S]): R[Response[T]] = {
responseMonad.map(responseMonad.handleError(delegate.send(request)) {
case e: Exception =>
logger.error(
s"Exception when sending request: $request.\n" +
s"To reproduce, run: ${request.toCurl}",
e
)
responseMonad.error(e)
}) { response =>
logger.debug(
s"For request: $request got response: $response.\n" +
s"To reproduce, run: ${request.toCurl}"
)
response
}
}
override def close(): Unit = delegate.close()
override def responseMonad: MonadError[R] = delegate.responseMonad
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment