SpringMVC 拦截器 logback 文件保存拦截流量日志
引入依赖
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
public class AccessHistoryInterceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(AccessHistoryInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
StringBuffer log = new StringBuffer();
log.append(request.getRemoteAddr());
log.append("| ");
log.append(request.getRequestURL());
log.append("| ");
log.append(request.getHeader("user-agent"));
this.logger.info(log.toString());
System.out.println("AccessHistoryInterceptor.preHandle");
return true;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender class="ch.qos.logback.core.ConsoleAppender" name="console">
<encoder>
<pattern>[%thread] %d %level %logger{10} - %msg %n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="console"/>
</root>
<!---->
<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>
</configuration>
添加拦截xml配置
<mvc:interceptors>
<mvc:interceptor>
<!--拦截需要拦截的URL-->
<mvc:mapping path="/**"/>
<!--静态资源不做拦截-->
<mvc:exclude-mapping path="/assets/**"/>
<!--指明那个类对拦截的URL处理-->
<bean class="top.xiongmingcai.restful.interceptor.AccessHistoryInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
SpringMVC 拦截器 logback 文件保存拦截流量日志 · MingCaiXiong/spring-learn@b32c564