对于最新的稳定版本,请使用 Spring Boot 3.4.0spring-doc.cadn.net.cn

Logging

Spring Boot 没有强制性的日志记录依赖项,除了 Commons Logging API,它通常由 Spring Framework 的spring-jcl模块。 要使用 Logback,您需要包含它并且spring-jcl在 Classpath 上。 推荐的方法是通过Starters,这都依赖于spring-boot-starter-logging. 对于 Web 应用程序,您只需要spring-boot-starter-web,因为它传递依赖于日志记录Starters。 如果您使用 Maven,则以下依赖项会为您添加日志记录:spring-doc.cadn.net.cn

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring Boot 有一个LoggingSystemabstraction 尝试根据 Classpath 的内容配置 logging。 如果 Logback 可用,则它是首选。spring-doc.cadn.net.cn

如果你需要对 logging 进行的唯一更改是设置各种 logger 的级别,你可以在application.properties通过使用 “logging.level” 前缀,如以下示例所示:spring-doc.cadn.net.cn

logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
  level:
    org.springframework.web: "debug"
    org.hibernate: "error"

您还可以使用logging.file.name.spring-doc.cadn.net.cn

要配置日志记录系统的更精细设置,您需要使用LoggingSystem有问题。 默认情况下, Spring Boot 从系统的默认位置(例如classpath:logback.xml),但您可以使用logging.config财产。spring-doc.cadn.net.cn

配置 Logback 以进行日志记录

如果您需要将自定义应用于 logback ,而不是可以使用application.properties,您将需要添加标准的 logback 配置文件。 您可以添加logback.xmlfile 复制到 Classpath 的根目录,以便 logback 查找。 您还可以使用logback-spring.xml如果要使用 Spring Boot Logback 扩展spring-doc.cadn.net.cn

Spring Boot 提供了许多 logback 配置,这些配置可以是included在您自己的配置中。 这些 includes 旨在允许重新应用某些常见的 Spring Boot 约定。spring-doc.cadn.net.cn

以下文件在org/springframework/boot/logging/logback/:spring-doc.cadn.net.cn

此外,遗产base.xml文件是为了与早期版本的 Spring Boot 兼容。spring-doc.cadn.net.cn

典型的定制logback.xml文件将如下所示:spring-doc.cadn.net.cn

<?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>

您的 logback 配置文件还可以使用 System 属性,其中LoggingSystem为您创建:spring-doc.cadn.net.cn

Spring Boot 还通过使用自定义 Logback 转换器在控制台上(但不在日志文件中)提供了一些不错的 ANSI 颜色终端输出。 请参阅CONSOLE_LOG_PATTERNdefaults.xmlconfiguration 示例。spring-doc.cadn.net.cn

如果 Groovy 在 classpath 上,您应该能够使用logback.groovy也。 如果存在,则优先使用此设置。spring-doc.cadn.net.cn

Groovy 配置不支持 Spring 扩展。 任何logback-spring.groovy不会检测到文件。

为仅文件输出配置 Logback

如果要禁用控制台日志记录并仅将输出写入文件,则需要自定义logback-spring.xml那个导入file-appender.xml但不是console-appender.xml,如以下示例所示:spring-doc.cadn.net.cn

<?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.propertiesapplication.yaml,如以下示例所示:spring-doc.cadn.net.cn

logging.file.name=myapplication.log
logging:
  file:
    name: "myapplication.log"

配置 Log4j 以进行日志记录

如果 Log4j 2 在 Classpath 上,则 Spring Boot 支持 Log4j 2 进行日志记录配置。 如果使用 starters 来组装依赖项,则必须排除 Logback,然后包含 Log4j 2。 如果您不使用Starters,则需要提供(至少)spring-jcl除了 Log4j 2.spring-doc.cadn.net.cn

推荐的路径是通过Starters,即使它需要一些摇晃。 以下示例展示了如何在 Maven 中设置Starters:spring-doc.cadn.net.cn

<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 提供了几种不同的方法来设置 Starter。 一种方法是使用模块替换。 为此,请声明对 Log4j 2 Starters的依赖项,并告诉 Gradle 任何出现的默认日志记录Starters都应替换为 Log4j 2 Starters,如以下示例所示:spring-doc.cadn.net.cn

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.managersystem 属性设置为org.apache.logging.log4j.jul.LogManager.

使用 YAML 或 JSON 配置 Log4j 2

除了默认的 XML 配置格式外,Log4j 2 还支持 YAML 和 JSON 配置文件。 要将 Log4j 2 配置为使用备用配置文件格式,请将相应的依赖项添加到 Classpath 中,并命名配置文件以匹配您选择的文件格式,如以下示例所示:spring-doc.cadn.net.cn

格式 依赖 文件名

YAMLspring-doc.cadn.net.cn

com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yamlspring-doc.cadn.net.cn

log4j2.yaml + log4j2.ymlspring-doc.cadn.net.cn

JSON 格式spring-doc.cadn.net.cn

com.fasterxml.jackson.core:jackson-databindspring-doc.cadn.net.cn

log4j2.json + log4j2.jsnspring-doc.cadn.net.cn

使用复合配置配置 Log4j 2

Log4j 2 支持将多个配置文件组合成一个复合配置。 要在 Spring Boot 中使用此支持,请配置logging.log4j2.config.override替换为一个或多个辅助配置文件的位置。 辅助配置文件将与主配置合并,无论主配置文件的源是 Spring Boot 的默认值,标准位置(如log4j.xml或由logging.config财产。spring-doc.cadn.net.cn