使用使用spring拦截器实现日志管理实例拦截器实现日志管理实例
本篇文章主要介绍了使用spring拦截器实现日志管理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一
下。
使用HandlerInterceptor拦截器,可以拦截请求,实现通用的日志管理操作
一、添加拦截器类一、添加拦截器类
在"src/main/java"代码文件夹的"org.xs.demo1"的包下新建"LogInterceptor.java"类:
package org.xs.demo1;
import java.text.SimpleDateFormat;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* 日志拦截器
* @author ThinkGem
*/
public class LogInterceptor implements HandlerInterceptor {
private final Logger log = LoggerFactory.getLogger(getClass().getName());
private static final ThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("ThreadLocal StartTime");
/**
* 预处理
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
long beginTime = System.currentTimeMillis(); //开始时间
startTimeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见)
log.info("开始计时: {}", new SimpleDateFormat("hh:mm:ss.SSS").format(beginTime));
return true;
}
/**
* 返回处理
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
if (modelAndView != null){
log.info("ViewName: " + modelAndView.getViewName());
评论0
最新资源