package com.jspxcms.common.web;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
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;
/**
* 计时器。用于记录请求执行时间。
*
* @author liufang
*
*/
public class TimerFilter implements Filter {
private static final Logger logger = LoggerFactory
.getLogger(TimerFilter.class);
private static final NumberFormat FORMAT = new DecimalFormat("0.000");
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (logger.isDebugEnabled()) {
long begin = System.currentTimeMillis();
chain.doFilter(request, response);
long end = System.currentTimeMillis();
BigDecimal processedIn = new BigDecimal(end - begin)
.divide(new BigDecimal(1000));
String uri = ((HttpServletRequest) request).getRequestURI();
logger.debug("Processed in {} second(s). URI={}",
FORMAT.format(processedIn), uri);
} else {
chain.doFilter(request, response);
}
}
public void init(FilterConfig filterConfig) throws ServletException {
}
public void destroy() {
}
}