您的位置:首页 > 编程语言 > Java开发

使用spring拦截器实现日志管理实例

2017-03-08 15:39 746 查看

使用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());
}
}
/**
* 后处理
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 保存日志
//LogUtils.saveLog(request, handler, ex, null);
// 输出日志信息
log.info("访问地址:" + request.getRequestURI() + ",执行方式:" + request.getMethod());
long beginTime = startTimeThreadLocal.get(); //得到线程绑定的局部变量(开始时间)
long endTime = System.currentTimeMillis(); //结束时间
log.info("计时结束:{}", new SimpleDateFormat("hh:mm:ss.SSS").format(endTime));
}
}

二、修改配置文件

修改spring-mvc.xml件,加入:

<!-- 拦截器配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="org.xs.demo1.LogInterceptor" />
</mvc:interceptor>
</mvc:interceptors>

三、运行测试

访问"http://localhost:8080/demo1/hello/list2"地址

可以看到拦截器中输出的日志信息了

实例代码地址:spring-HandlerInterceptor_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 拦截器
相关文章推荐