使用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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 本文主要介绍使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例。
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前和调用后记录相关日志。)
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前
- Spring AOP使用@AspectJ实现日志管理
- SpringBoot使用自定义注解+拦截器 实现日志记录
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况)
- spring AOP自定义注解方式实现日志管理的实例讲解
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前和调用后记录相关日志。)
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Spring学习笔记(16)----使用Spring配置文件实现事务管理
- Spring3 AOP(实例:实现登陆和日志管理)
- 运用Unity结合PolicyInjection实现拦截器[结合操作日志实例]
- 5.8 把输出日志的实例改成用Spring的AOP来实现
- spring2.x使用aop实现声明式日志记录
- 商城项目用拦截器实现日志管理模块
- Spring学习笔记(18)----使用Spring配置文件实现事务管理
- 使用Spring配置文件实现事务管理
- ThreadLocal的实现原理,及使用实例,解决spring,hibernate非web项目下的懒加载 no session or session was closed(2)!
- Struts2拦截器实现日志管理系统