Logging
Spring Boot 没有强制性的日志记录依赖项,除了 Commons Logging API,它通常由 Spring Framework 的spring-jcl模块。
要使用 Logback,您需要将其包含在内,并且spring-jcl在类路径上。
推荐的方法是通过Starters,这都依赖于Startersspring-boot-starter-logging.
对于 Web 应用程序,您只需要spring-boot-starter-web,因为它传递地依赖于日志记录Starters。
如果您使用 Maven,则以下依赖项会为您添加日志记录:
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>Spring Boot 有一个LoggingSystem尝试根据类路径的内容配置日志记录的抽象。
如果 Logback 可用,它是首选。
如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,则可以在application.properties使用“logging.level”前缀,如以下示例所示:
- 
Properties 
- 
YAML 
logging.level.org.springframework.web=debug
logging.level.org.hibernate=errorlogging:
  level:
    org.springframework.web: "debug"
    org.hibernate: "error"您还可以使用logging.file.name.
要配置日志记录系统的更细粒度的设置,您需要使用LoggingSystem有问题。
默认情况下,Spring Boot 从系统的默认位置(例如classpath:logback.xml对于 Logback),但您可以使用logging.config财产。
配置日志记录的日志备份
如果您需要将自定义应用于日志备份,则超出了可以使用application.properties,则需要添加标准的 logback 配置文件。
您可以添加一个logback.xml文件到类路径的根目录,以便 logback 查找。
您还可以使用logback-spring.xml如果您想使用 Spring Boot Logback 扩展。
| Logback 文档有一个专门的部分,详细介绍了配置。 | 
Spring Boot 提供了许多回登录配置,这些配置可以included在您自己的配置中。
这些包含旨在允许重新应用某些常见的 Spring Boot 约定。
以下文件在org/springframework/boot/logging/logback/:
- 
defaults.xml- 提供转换规则、模式属性和常见的记录器配置。
- 
console-appender.xml- 添加一个ConsoleAppender使用CONSOLE_LOG_PATTERN.
- 
structured-console-appender.xml- 添加一个ConsoleAppender在CONSOLE_LOG_STRUCTURED_FORMAT.
- 
file-appender.xml- 添加一个RollingFileAppender使用FILE_LOG_PATTERN和ROLLING_FILE_NAME_PATTERN使用适当的设置。
- 
structured-file-appender.xml- 添加一个RollingFileAppender使用ROLLING_FILE_NAME_PATTERN在FILE_LOG_STRUCTURED_FORMAT.
此外,遗产base.xml文件是为了与早期版本的 Spring Boot 兼容而提供的。
典型的习俗logback.xml文件将如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
	<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
	<root level="INFO">
		<appender-ref ref="CONSOLE" />
	</root>
	<logger name="org.springframework.web" level="DEBUG"/>
</configuration>您的日志备份配置文件还可以使用系统属性,即LoggingSystem负责为您创作:
- 
${PID}:当前进程 ID。
- 
${LOG_FILE}:是否logging.file.name在 Boot 的外部配置中设置。
- 
${LOG_PATH}:是否logging.file.path(表示日志文件所在的目录)是在 Boot 的外部配置中设置的。
- 
${LOG_EXCEPTION_CONVERSION_WORD}:是否logging.exception-conversion-word在 Boot 的外部配置中设置。
- 
${ROLLING_FILE_NAME_PATTERN}:是否logging.pattern.rolling-file-name在 Boot 的外部配置中设置。
Spring Boot 还通过使用自定义 Logback 转换器在控制台(但不是日志文件中)提供一些不错的 ANSI 颜色终端输出。
请参阅CONSOLE_LOG_PATTERN在defaults.xml配置。
如果 Groovy 在类路径上,您应该能够使用logback.groovy也。
如果存在,则优先考虑此设置。
| Groovy 配置不支持 Spring 扩展。
任何 logback-spring.groovy文件将不会被检测到。 | 
为仅文件输出配置日志返回
如果要禁用控制台日志记录并仅将输出写入文件,则需要自定义logback-spring.xml该进口file-appender.xml但不是console-appender.xml,如以下示例所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
	<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
	<root level="INFO">
		<appender-ref ref="FILE" />
	</root>
</configuration>您还需要添加logging.file.name给你的application.properties或application.yaml,如以下示例所示:
- 
Properties 
- 
YAML 
logging.file.name=myapplication.loglogging:
  file:
    name: "myapplication.log"配置 Log4j 进行日志记录
如果 Log4j 2 位于类路径上,则 Spring Boot 支持 Log4j 2 进行日志记录配置。
如果您使用Starters来组装依赖项,则必须排除 Logback,然后包含 Log4j 2。
如果您不使用Starters,则需要提供(至少)spring-jcl除了 Log4j 2.
推荐的路径是通过Starters,尽管它需要一些抖动。 以下示例显示了如何在 Maven 中设置Starters:
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>Gradle 提供了几种不同的方法来设置Starters。 一种方法是使用模块替换。 为此,请声明对 Log4j 2 Starters的依赖项,并告诉 Gradle 默认日志记录Starters的任何出现都应替换为 Log4j 2 Starters,如以下示例所示:
dependencies {
	implementation "org.springframework.boot:spring-boot-starter-log4j2"
	modules {
		module("org.springframework.boot:spring-boot-starter-logging") {
			replacedBy("org.springframework.boot:spring-boot-starter-log4j2", "Use Log4j2 instead of Logback")
		}
	}
}| Log4j Starters将常见日志记录要求的依赖项收集在一起(例如让 Tomcat 使用 java.util.logging但使用 Log4j 配置输出 2)。 | 
| 要确保使用 java.util.logging路由到 Log4j 2 中,通过设置java.util.logging.manager系统属性设置为org.apache.logging.log4j.jul.LogManager. | 
使用 YAML 或 JSON 配置 Log4j 2
除了默认的 XML 配置格式外,Log4j 2 还支持 YAML 和 JSON 配置文件。 要将 Log4j 2 配置为使用替代配置文件格式,请将适当的依赖项添加到类路径,并命名配置文件以匹配您选择的文件格式,如以下示例所示:
| 格式 | 依赖 | 文件名 | 
|---|---|---|
| YAML | 
 | 
 | 
| JSON | 
 | 
 |