加入 maven 依赖
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
加入打包
在 resources 包下面增加 logback.xml 配置
<?xml version="1.0" encoding="UTF-8" ?><configuration><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><!--10 代表包名最大允许的长度--><pattern>[%thread] %d %level %logger{10} - %msg%n</pattern></encoder></appender><!--RollingFileAppender: 按天滚动输出的日志文件--><appender name="accessHistoryLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件保存位置--><filenamePattern>/var/log/hello-spring/history.%d.log</filenamePattern></rollingPolicy><encoder><pattern>[%thread] %d %level %logger{10} - %msg%n</pattern></encoder></appender><!--root 最低级别日志输出, 引用 console 格式--><root level="debug"><appender-ref ref="console"/></root><!--设置中类产生的日志,都会使用该设置所描述的规则additivity:false 表示只会向指定的输出方式输出,否则也会向 console 输出--><logger name="com.ylq.springmvc.interceptor.AccessHistoryInterceptor" level="INFO" additivity="false"/></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>
