开发“用户流量”拦截器
使用拦截器,采集用户基础数据(ip、访问时间、使用的设备)
思路:使用日志组件打印出访问者基础信息,并保存到 日志文件
在工程中引入日志依赖(引入依赖后>>>记得到tomcat中进行发布)
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
配置日志组件的输出格式和输出级别
创建logback.xml文件,设置日志程序
<?xml version="1.0" encoding="UTF-8" ?>
<configuration >
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="console"/>
</root>
</configuration>
对日志输出的路径,日志文件命名格式等进行设置

<appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="accessHistoryLog">
<!--
通过rollingPolicy设置日志滚动的策略,这是使用按照时间滚动
fileNamePattern属性设置滚动生成文件的格式,这里设置的精确到天,也就是按照天滚动,如果时间设置精确到秒,就按秒来滚动
maxHistory属性设定最大的文件数,比如按天滚动,这里设置了30天,在第31天日志生成的时候,第一天的日志就会被删掉
-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" name="accessHistoryLog">
<!--每日分割-->
<fileNamePattern>/Users/xmc/Downloads/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--保留30天的历史记录-->
<maxHistory>30</maxHistory>
<!--最大存储-->
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<!--日志格式-->
<encoder>
<pattern>【logbck】%blue([requestId:%X{requestId:-syslogId}]) %d{yyyy-MM-dd HH:mm:ss.SSS} %red([%thread])
%5level - %msg%n
</pattern>
</encoder>
</appender>
<logger name="top.xiongmingcai.restful.interceptor.AccessHistoryInterceptor" level="INFO" additivity="false">
<appender-ref ref="accessHistoryLog"/>
</logger>
-
<fileNamePattern>滚动后的文件名,也包括了滚动时间的选择。 -
<maxHistory>保留的存档文件的数量,与上一个fileNamePattern有关。假设定义为6,当fileNamePattern以天为单位时,即保存6天的日志;当以月为单位时,即保存6个月的日志。旧的日志以异步的方式删除。 -
<totalSizeCap>所有的归档日志的大小。当超过限制时,会删掉旧的归档日志。
编写拦截器AccessHistoryInterceptor

到applicationContext.xml 文件中 --对拦截器进行配置

tail -f logFile.log

总结
拦截器的使用场景-->通常需要对“请求(URL)”批量处理时,需要使用
SpringMVC 拦截器 logback 文件保存拦截流量日志 · MingCaiXiong/spring-learn@b32c564

文件保存拦截器拦截的客户端IP,请求URL,user-agent · MingCaiXiong/spring-learn@c2c9347