在项目开发中经常会遇到本机开发环境明明是好的,为什么到了测试环境就各种问题了,要解决这种问题,记录日志功能就显得尤为重要. 现在日志框架也有很多种,像jdk自带的工具包中的日志,Apache工具包的log4j , slf4j 等等.
下面介绍下在spring-boot中如何增加日志配置 , 案例代码在 “spring-boot(二)数据库操作” 基础上改造
参考官方文档说明
这篇文章我就讲解下logback插件的集成,因为我在使用这些日志插件中感觉这个框架是相对强大的,通过配置可以接管log4j等其他日志,并且支持占位符的方式记录.具体优点可以查询相关的介绍文档.同时我也推荐各位在搭建新系统的时候优先采用logback来管理项目中的日志.
-
项目结构图
-
编写logback-spring.properties
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework.web" level="INFO" />
<property name="ENCODER_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %c:%L%n--->%msg%n" />
<!-- 控制台日志:输出全部日志到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${ENCODER_PATTERN}</Pattern>
</encoder>
</appender>
<!-- 文件日志:输出全部日志到文件 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/output.%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${ENCODER_PATTERN}</pattern>
</encoder>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
- 在controller中使用log记录日志
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author majinding888@foxmail.com
* @date 2016-12-21 上午10:43:48
*/
@Controller
public class HelloController {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
HelloService service;
@RequestMapping("/hello/list")
public String list(Model model) {
log.info("访问了 {} 接口 , 现在时间为 {} ", "/hello/list", new Date());
model.addAttribute("list", service.queryHellos());
return "list";
}
... 省略部分代码
}
到此日志集成已经完成了, 启动主启动类, 浏览器访问 http://localhost:666/hello/list
查看控制台输出
源代码见附件: my-springboot-4.zip