Skip to content

Instantly share code, notes, and snippets.

@rantav
Last active July 23, 2019 21:13
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rantav/d689deb263b1eed4865c to your computer and use it in GitHub Desktop.
Save rantav/d689deb263b1eed4865c to your computer and use it in GitHub Desktop.
environment.servlets().addFilter("HttpErrorLoggerFilter", new HttpErrorLoggerFilter())
.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
package com.totango...;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* this filter logs HTTP errors.
* @author ran
*/
public class HttpErrorLoggerFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger("HTTP.ERRORS");
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
throws IOException, ServletException {
chain.doFilter(request, response);
if (response instanceof HttpServletResponse) {
final HttpServletResponse res = (HttpServletResponse) response;
final int status = res.getStatus();
if (status < 200 || status >= 400) {
final StringBuilder sb = new StringBuilder("HTTP ERROR ");
sb.append(status);
if (request instanceof Request) {
// Using the class Request (from jetty) just to make things a little easier, such as getUri.
// You could use a more generic HttpServletRequest class here and just extract the request
// data from it by yourself
final Request req = (Request) request;
sb.append(" ");
sb.append(req.getMethod());
sb.append(" ");
sb.append(req.getUri());
sb.append(" ");
sb.append(" HEADERS: {");
final Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
final String name = headerNames.nextElement();
sb.append(name);
sb.append(": ");
sb.append(req.getHeader(name));
sb.append(", ");
}
sb.append("}");
}
log.info(sb.toString());
}
}
}
@Override
public void destroy() {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment