Skip to content

Commit

Permalink
#1: Logging unhandled exceptions #1
Browse files Browse the repository at this point in the history
  • Loading branch information
minkowp committed Aug 8, 2019
1 parent ddc7c1a commit 951d08b
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions src/main/java/pl/piomin/logging/filter/SpringLoggingFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,26 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
final SpringResponseWrapper wrappedResponse = new SpringResponseWrapper(response);
wrappedResponse.setHeader("X-Request-ID", MDC.get("X-Request-ID"));
wrappedResponse.setHeader("X-Correlation-ID", MDC.get("X-Correlation-ID"));
chain.doFilter(wrappedRequest, wrappedResponse);
final long duration = System.currentTimeMillis() - startTime;
if (logHeaders)
LOGGER.info("Response({} ms): status={}, payload={}, headers={}", value("X-Response-Time", duration),
value("X-Response-Status", wrappedResponse.getStatus()), IOUtils.toString(wrappedResponse.getContentAsByteArray(),
wrappedResponse.getCharacterEncoding()), wrappedResponse.getAllHeaders());
else
LOGGER.info("Response({} ms): status={}, payload={}", value("X-Response-Time", duration),
value("X-Response-Status", wrappedResponse.getStatus()),
IOUtils.toString(wrappedResponse.getContentAsByteArray(), wrappedResponse.getCharacterEncoding()));
try {
chain.doFilter(wrappedRequest, wrappedResponse);
} catch (Exception e) {
logResponse(startTime, wrappedResponse, 500);
throw e;
}
logResponse(startTime, wrappedResponse, wrappedResponse.getStatus());
}
}

private void logResponse(long startTime, SpringResponseWrapper wrappedResponse, int overriddenStatus) throws IOException {
final long duration = System.currentTimeMillis() - startTime;
if (logHeaders)
LOGGER.info("Response({} ms): status={}, payload={}, headers={}", value("X-Response-Time", duration),
value("X-Response-Status", overriddenStatus), IOUtils.toString(wrappedResponse.getContentAsByteArray(),
wrappedResponse.getCharacterEncoding()), wrappedResponse.getAllHeaders());
else
LOGGER.info("Response({} ms): status={}, payload={}", value("X-Response-Time", duration),
value("X-Response-Status", overriddenStatus),
IOUtils.toString(wrappedResponse.getContentAsByteArray(), wrappedResponse.getCharacterEncoding()));
}

}

0 comments on commit 951d08b

Please sign in to comment.