package com.googlecode.mycontainer.web;
import java.io.IOException;
import java.security.Principal;
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.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogFilter implements Filter {
private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class);
public void init(FilterConfig filterConfig) throws ServletException {
LOG.info("Init");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
LOG.info(toString((HttpServletRequest) request));
chain.doFilter(request, response);
}
public static String toString(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
String user = "null";
Principal principal = request.getUserPrincipal();
if (principal != null) {
user = principal.getName();
}
sb.append('[').append(user).append("] ").append(request.getMethod())
.append(" ").append(request.getRequestURI()).append('?')
.append(request.getQueryString()).append(" ")
.append(request.getContentType()).append(" ")
.append(request.getContentLength());
return sb.toString();
}
public void destroy() {
LOG.info("Destroy");
}
}