Last active
July 23, 2019 21:13
-
-
Save rantav/d689deb263b1eed4865c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
environment.servlets().addFilter("HttpErrorLoggerFilter", new HttpErrorLoggerFilter()) | |
.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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