spring-boot(四)日志框架集成

分类:spring-boot
阅读:717
作者:majingjing
发布:2016-12-22 17:06

在项目开发中经常会遇到本机开发环境明明是好的,为什么到了测试环境就各种问题了,要解决这种问题,记录日志功能就显得尤为重要. 现在日志框架也有很多种,像jdk自带的工具包中的日志,Apache工具包的log4j , slf4j 等等.

下面介绍下在spring-boot中如何增加日志配置 , 案例代码在 “spring-boot(二)数据库操作” 基础上改造

参考官方文档说明 QQ截图20161222170916.png

这篇文章我就讲解下logback插件的集成,因为我在使用这些日志插件中感觉这个框架是相对强大的,通过配置可以接管log4j等其他日志,并且支持占位符的方式记录.具体优点可以查询相关的介绍文档.同时我也推荐各位在搭建新系统的时候优先采用logback来管理项目中的日志.

  1. 项目结构图 QQ截图20161222164517.png

  2. 编写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>
  1. 在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 查看控制台输出 QQ截图20161222165924.png


源代码见附件: my-springboot-4.zip