开发“用户流量”拦截器

使用拦截器,采集用户基础数据(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

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