Spring MVC开发用户流量拦截器
如果觉得写的还可以,点个赞支持一下笔者呗!你的点赞和关注会让我更快更新哦。笔者会持续更新关于Java和大数据有关的文章。目前集中精力在更新java框架的内容。
首先增加如下maven依赖
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
同时在运行前要把依赖加入到lib目录中具体步骤如下:
再创建如下logback.xml文件
注意:TimeBasedRollingPolicy是每隔一天就会产生一个log文件,其中%d可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。如果直接使用 %d,默认格式是 yyyy-MM-dd。
<rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>d:/logs/history.%d.log</fileNamePattern></rollingPolicy>
<configuration><appendername="console"class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%thread] %d %level %logger{10} - %msg%n</pattern></encoder></appender><appendername="accessHistoryLog"class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>d:/logs/history.%d.log</fileNamePattern></rollingPolicy><encoder><pattern>[%thread] %d %level %logger{10} - %msg%n</pattern></encoder></appender><rootlevel="debug"><appender-refref="console"/></root><loggername="com.zjc.restful.interceptor.AccessHistoryInterceptor"level="INFO"additivity="false"><appender-refref="accessHistoryLog"/></logger></configuration>
同时在SpringMVC.xml配置文件中加入拦截器配置:
指的是不拦截resources下的所有文件以及子文件。(一般是不拦截静态资源)
<mvc:interceptors><mvc:interceptor><mvc:mappingpath="/**"/><mvc:exclude-mappingpath="/resources/**"/><beanclass="com.zjc.restful.interceptor.AccessHistoryInterceptor"/></mvc:interceptor></mvc:interceptors>
再加入如下拦截器类
publicclassAccessHistoryInterceptorimplementsHandlerInterceptor { privateLoggerlogger=LoggerFactory.getLogger(AccessHistoryInterceptor.class); publicbooleanpreHandle(HttpServletRequestrequest, HttpServletResponseresponse, Objecthandler) throwsException { StringBuilderlog=newStringBuilder(); log.append(request.getRemoteAddr());//获取用户远程ip地址log.append("|"); log.append(request.getRequestURL());//获取用户访问的哪个urllog.append("|"); log.append(request.getHeader("user-agent"));//用户的客户端环境保存在请求头的user-agent属性中logger.info(log.toString()); returntrue; } }
以下是log文件的内容,与我们设置的保持一致: