目录
1 配置 logback
1.1 日志格式
1.2 日志输出
1.3 文件保存
1.4 配置日志文件
2 配置 log4j2
2.1 添加依赖
2.2 配置文件
Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。
默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。
SpringBoot 的默认输出的日志格式如下:
输出如下元素:
---
来标识日志开始部分Logback 是没有FATAL级别的日志,它将被映射到ERROR。
日志级别从低到高分为:TRACE< DEBUG< INFO< WARN< ERROR< FATAL。
SpringBoot 默认为我们输出的日志级别为INFO、WARN、ERROR,如需要使用 “debug”,可以通过以下方式开启
- 命令模式配置: java -jar myapp.jar --debug
- 资源文件配置:在 application.properties 配置 “debug=true”
默认情况下,SpringBoot 仅将日志输出到控制台,不会写入到日志文件中去。如果除了控制台输出之外还想写日志文件,则需要在 application.properties 设置 logging.file 或 logging.path 属性。
日志文件在达到10 MB 时进行切割,默认情况下会记录 ERROR、WARN、INFO 级别消息。
- logging.file.max-size:限制日志文件大小
- logging.file.max-history:限制日志保留天数
默认情况下,Logback 用 INFO 级别输出到控制台,不会保存到文件。
spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。
1.4.1 默认情况
测试代码:
package com.example.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/log")
public class LogController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("writelog")
public String writeLog() {
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
return "OK";
}
}
在浏览器中输入http://localhost:8080/log/writelog 将会看到以下结果:
没有配置任何其它配置,就可以看到来自logback root logger的输出信息。我们注意到debug级别的日志没有记录下来,那是因为Spring Boot为Logback提供了默认的配置文件 base.xml。
base.xml内容:
base.xml 中 root logger的日志级别被重写为Info级别,这就是上面例子中debug级别的日志没有打印的原因。
1.4.2 通过application.properties文件对Logback进行配置
配置日志文件:log.log
配置 com.example.demo.controller 日志级别为:debug
logging.file=log.log
logging.level.com.example.demo.controller = debug
结果:
1.4.3 通过额外的文件配置Logback
在 src/main/resources 下创建 logback-spring.xml 文件,实例如下:
${PATTERN}
${LOG_HOME}/info/info.%d{yyyy-MM-dd}.log
30
${PATTERN}
100MB
${LOG_HOME}/error/error.%d{yyyy-MM-dd}.log
30
${PATTERN}
100MB
ERROR
ACCEPT
DENY
1.4.1
<springProfile> 标签使我们让配置文件更加灵活,它可以选择性的包含或排除部分配置。
1.4.2 <appender>
格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。
控制台输出ConsoleAppender:ch.qos.logback.core.ConsoleAppender
输出到文件 RollingFileAppender:ch.qos.logback.core.rolling.RollingFileAppender
1.4.3
<
appender>。有三个属性:
name: 用来指定受此loger约束的某一个包或者具体的某一个类。
level: 用来设置打印级别:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
addtivity: 是否向上级loger传递打印信息。默认是true。
主要介绍spring boot集成log4j2日志框架。
打开pom.xml文件,去除logback的依赖包,添加log4j2的依赖包
默认的properties配置对log4j2不够友好,我们应用外部配置文件,在资源文件夹src/main/resources下添加log4j2.xml或者log4j2-spring.xml,启动后spring boot自动加载,配置文件的示例如下:
%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n
参考:
官方文档
Spring Boot 日志配置(超详细)
Spring Boot系列教程六:日志输出配置log4j2