加入 maven 依赖

    1. <dependency>
    2. <groupId>ch.qos.logback</groupId>
    3. <artifactId>logback-classic</artifactId>
    4. <version>1.2.3</version>
    5. </dependency>

    加入打包

    在 resources 包下面增加 logback.xml 配置

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <configuration>
    3. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    4. <encoder>
    5. <!--10 代表包名最大允许的长度-->
    6. <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern>
    7. </encoder>
    8. </appender>
    9. <!--RollingFileAppender: 按天滚动输出的日志文件-->
    10. <appender name="accessHistoryLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    11. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    12. <!--日志文件保存位置-->
    13. <filenamePattern>/var/log/hello-spring/history.%d.log</filenamePattern>
    14. </rollingPolicy>
    15. <encoder>
    16. <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern>
    17. </encoder>
    18. </appender>
    19. <!--root 最低级别日志输出, 引用 console 格式-->
    20. <root level="debug">
    21. <appender-ref ref="console"/>
    22. </root>
    23. <!--设置中类产生的日志,都会使用该设置所描述的规则
    24. additivity:false 表示只会向指定的输出方式输出,否则也会向 console 输出-->
    25. <logger name="com.ylq.springmvc.interceptor.AccessHistoryInterceptor" level="INFO" additivity="false"/>
    26. </configuration>/>
    response.setContentType("text/html;charset=utf-8");
    

    编写拦截类

    public class AccessHistoryInterceptor implements HandlerInterceptor {
        private Logger logger = LoggerFactory.getLogger(AccessHistoryInterceptor.class);
    
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            StringBuilder log = new StringBuilder();
            log.append(request.getRemoteAddr());
            log.append("|");
            log.append(request.getRequestURL());
            log.append("|");
            log.append(request.getHeader("user-agent"));
            logger.info(log.toString());
            return true;
        }
    }
    

    拦截器配置增加

    <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <mvc:exclude-mapping path="/resources/**"/>
      <bean class="com.ylq.springmvc.interceptor.AccessHistoryInterceptor"/>
    </mvc:interceptor>