Spring Boot 没有强制性的日志记录依赖,除了 Commons Logging API,它通常由 Spring Framework 的模块提供。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是通过启动器,这都取决于 . 对于 Web 应用程序,您只需要 ,因为它以传递方式依赖于日志记录启动器。 如果使用 Maven,则以下依赖项会为您添加日志记录:spring-jclspring-jclspring-boot-starter-loggingspring-boot-starter-webSpring中文文档

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

Spring Boot 有一个抽象,它尝试根据类路径的内容配置日志记录。 如果 Logback 可用,则它是首选。LoggingSystemSpring中文文档

如果需要对日志记录进行的唯一更改是设置各种记录器的级别,则可以使用“logging.level”前缀执行此操作,如以下示例所示:application.propertiesSpring中文文档

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

您还可以使用 设置将日志写入的文件的位置(除控制台外)。logging.file.nameSpring中文文档

要配置日志记录系统的更细粒度的设置,您需要使用相关系统支持的本机配置格式。 默认情况下,Spring Boot 从系统的默认位置(例如 Logback)选取本机配置,但您可以使用该属性设置配置文件的位置。LoggingSystemclasspath:logback.xmllogging.configSpring中文文档

配置日志记录的日志回

如果需要将自定义项应用于 的登录,则需要添加标准 logback 配置文件。 您可以将文件添加到类路径的根目录中,以便 logback 查找。 如果要使用 Spring Boot Logback 扩展,也可以使用。application.propertieslogback.xmllogback-spring.xmlSpring中文文档

Logback 文档有一个专门的部分,详细介绍了配置

Spring Boot 提供了许多可以在您自己的配置中进行的日志回视图配置。 这些包含旨在允许重新应用某些常见的 Spring Boot 约定。includedSpring中文文档

以下文件在以下情况下提供:org/springframework/boot/logging/logback/Spring中文文档

  • defaults.xml- 提供转换规则、模式属性和常用记录器配置。Spring中文文档

  • console-appender.xml- 添加了一个使用 .ConsoleAppenderCONSOLE_LOG_PATTERNSpring中文文档

  • file-appender.xml- 添加一个 using 和 具有适当设置。RollingFileAppenderFILE_LOG_PATTERNROLLING_FILE_NAME_PATTERNSpring中文文档

此外,还提供了一个旧文件,以便与早期版本的 Spring Boot 兼容。base.xmlSpring中文文档

典型的自定义文件如下所示:logback.xmlSpring中文文档

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

您的日志回配置文件还可以利用负责为您创建的系统属性:LoggingSystemSpring中文文档

  • ${PID}:当前进程 ID。Spring中文文档

  • ${LOG_FILE}:是否在 Boot 的外部配置中设置。logging.file.nameSpring中文文档

  • ${LOG_PATH}:是否在 Boot 的外部配置中设置了(表示要驻留的日志文件所在的目录)。logging.file.pathSpring中文文档

  • ${LOG_EXCEPTION_CONVERSION_WORD}:是否在 Boot 的外部配置中设置。logging.exception-conversion-wordSpring中文文档

  • ${ROLLING_FILE_NAME_PATTERN}:是否在 Boot 的外部配置中设置。logging.pattern.rolling-file-nameSpring中文文档

Spring Boot 还通过使用自定义 Logback 转换器在控制台上(但不是在日志文件中)提供了一些不错的 ANSI 颜色终端输出。 有关示例,请参阅配置中的 。CONSOLE_LOG_PATTERNdefaults.xmlSpring中文文档

如果 Groovy 在类路径上,您也应该能够配置 Logback。 如果存在,则指定此设置。logback.groovySpring中文文档

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

为仅文件输出配置 Logback

如果要禁用控制台日志记录并仅将输出写入文件,则需要导入但不导入的自定义项,如以下示例所示:logback-spring.xmlfile-appender.xmlconsole-appender.xmlSpring中文文档

<?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.nameapplication.propertiesapplication.yamlSpring中文文档

logging.file.name=myapplication.log
logging:
  file:
    name: "myapplication.log"
Logback 文档有一个专门的部分,详细介绍了配置
Groovy 配置不支持 Spring 扩展。 不会检测到任何文件。logback-spring.groovy

配置 Log4j 以进行日志记录

Spring Boot 支持 Log4j 2 进行日志记录配置,如果它位于类路径上。 如果使用启动器来组装依赖项,则必须排除 Logback,然后改为包括 Log4j 2。 如果您不使用启动器,除了 Log4j 2 之外,您还需要提供(至少)启动器。spring-jclSpring中文文档

推荐的路径是通过启动器,即使它需要一些摇晃。 以下示例演示如何在 Maven 中设置启动器:Spring中文文档

<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 提供了几种不同的方法来设置启动器。 一种方法是使用模块替换。 为此,请声明对 Log4j 2 启动器的依赖关系,并告诉 Gradle 默认日志记录启动器的任何出现都应替换为 Log4j 2 启动器,如以下示例所示:Spring中文文档

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 启动器将常见日志记录要求的依赖项收集在一起(例如让 Tomcat 使用 Tomcat,但使用 Log4j 2 配置输出)。java.util.logging
要确保将 using 执行的调试日志记录路由到 Log4j 2 中,请通过将 system 属性设置为 来配置其 JDK 日志记录适配器java.util.loggingjava.util.logging.managerorg.apache.logging.log4j.jul.LogManager

使用 YAML 或 JSON 配置 Log4j 2

除了默认的 XML 配置格式外,Log4j 2 还支持 YAML 和 JSON 配置文件。 要将 Log4j 2 配置为使用替代配置文件格式,请将适当的依赖项添加到类路径,并命名配置文件以匹配您选择的文件格式,如以下示例所示:Spring中文文档

格式 依赖 文件名

YAML公司Spring中文文档

com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yamlSpring中文文档

log4j2.yaml + log4j2.ymlSpring中文文档

JSON的Spring中文文档

com.fasterxml.jackson.core:jackson-databindSpring中文文档

log4j2.json + log4j2.jsnSpring中文文档

使用复合配置配置 Log4j 2

Log4j 2 支持将多个配置文件组合成单个复合配置。 要在 Spring Boot 中使用此支持,请使用一个或多个辅助配置文件的位置进行配置。 辅助配置文件将与主配置合并,无论主配置文件的源是 Spring Boot 的默认值、标准位置(如 )还是属性配置的位置。logging.log4j2.config.overridelog4j.xmllogging.configSpring中文文档

Log4j 启动器将常见日志记录要求的依赖项收集在一起(例如让 Tomcat 使用 Tomcat,但使用 Log4j 2 配置输出)。java.util.logging
要确保将 using 执行的调试日志记录路由到 Log4j 2 中,请通过将 system 属性设置为 来配置其 JDK 日志记录适配器java.util.loggingjava.util.logging.managerorg.apache.logging.log4j.jul.LogManager
格式 依赖 文件名

YAML公司Spring中文文档

com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yamlSpring中文文档

log4j2.yaml + log4j2.ymlSpring中文文档

JSON的Spring中文文档

com.fasterxml.jackson.core:jackson-databindSpring中文文档

log4j2.json + log4j2.jsnSpring中文文档