对于最新的稳定版本,请使用 Spring Boot 3.4.0! |
Logging
Spring Boot 没有强制性的日志记录依赖项,除了 Commons Logging API,它通常由 Spring Framework 的模块提供。
要使用 Logback,您需要将其包含在 Classpath 中。
推荐的方法是通过 starters,这都依赖于 .
对于 Web 应用程序,您只需要 ,因为它在传递上依赖于日志记录Starters。
如果您使用 Maven,则以下依赖项会为您添加日志记录:spring-jcl
spring-jcl
spring-boot-starter-logging
spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot 有一个LoggingSystem
抽象,它尝试根据 Classpath 的内容配置日志记录。
如果 Logback 可用,则它是首选。
如果你需要对日志记录进行的唯一更改是设置各种 Logger 的级别,则可以使用 “logging.level” 前缀来执行此操作,如以下示例所示:application.properties
-
Properties
-
YAML
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
level:
org.springframework.web: "debug"
org.hibernate: "error"
您还可以使用 设置将日志写入的文件的位置(除了控制台之外)。logging.file.name
要配置日志记录系统的更精细设置,您需要使用相关 LoggingSystem
支持的本机配置格式。
默认情况下, Spring Boot 从系统的默认位置(例如 Logback)获取本机配置,但您可以使用该属性设置配置文件的位置。classpath:logback.xml
logging.config
配置 Logback 以进行日志记录
如果您需要将自定义应用于 logback,而不是使用 实现的自定义,则需要添加标准 logback 配置文件。
您可以将文件添加到 Classpath 的根目录,以便 logback 查找。
如果要使用 Spring Boot Logback 扩展,也可以使用。application.properties
logback.xml
logback-spring.xml
Logback 文档有一个专门的部分,其中详细介绍了配置。 |
Spring Boot 提供了许多 logback 配置,这些配置可以位于您自己的配置中。
这些 includes 旨在允许重新应用某些常见的 Spring Boot 约定。included
以下文件在 下提供:org/springframework/boot/logging/logback/
-
defaults.xml
- 提供转换规则、模式属性和通用记录器配置。 -
console-appender.xml
- 使用.
CONSOLE_LOG_PATTERN
-
file-appender.xml
- 使用 和 添加具有适当设置的RollingFileAppender
。FILE_LOG_PATTERN
ROLLING_FILE_NAME_PATTERN
此外,还提供了一个遗留文件,以便与早期版本的 Spring Boot 兼容。base.xml
典型的自定义文件如下所示: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>
您的 logback 配置文件还可以使用 LoggingSystem
负责为您创建的 System 属性:
-
${PID}
:当前进程 ID。 -
${LOG_FILE}
:是否在 Boot 的外部配置中设置。logging.file.name
-
${LOG_PATH}
:是否在 Boot 的外部配置中设置了 (表示日志文件所在的目录)。logging.file.path
-
${LOG_EXCEPTION_CONVERSION_WORD}
:是否在 Boot 的外部配置中设置。logging.exception-conversion-word
-
${ROLLING_FILE_NAME_PATTERN}
:是否在 Boot 的外部配置中设置。logging.pattern.rolling-file-name
Spring Boot 还通过使用自定义 Logback 转换器在控制台上(但不在日志文件中)提供了一些不错的 ANSI 颜色终端输出。
有关示例,请参阅配置中的 。CONSOLE_LOG_PATTERN
defaults.xml
如果 Groovy 在 Classpath 上,则您也应该能够配置 Logback。
如果存在,则优先使用此设置。logback.groovy
Groovy 配置不支持 Spring 扩展。
不会检测到任何文件。logback-spring.groovy |
为仅文件输出配置 Logback
如果要禁用控制台日志记录并仅将输出写入文件,则需要一个 imports 但不导入的自定义,如以下示例所示: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>
您还需要添加到 or 中,如以下示例所示:logging.file.name
application.properties
application.yaml
-
Properties
-
YAML
logging.file.name=myapplication.log
logging:
file:
name: "myapplication.log"
配置 Log4j 以进行日志记录
如果 Log4j 2 在 Classpath 上,则 Spring Boot 支持 Log4j 2 进行日志记录配置。
如果使用 starters 来组装依赖项,则必须排除 Logback,然后包含 Log4j 2。
如果您不使用Starters,则除了 Log4j 2 之外,还需要提供(至少)其他功能。spring-jcl
推荐的路径是通过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 提供了几种不同的方法来设置 Starter。 一种方法是使用模块替换。 为此,请声明对 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 但使用 Log4j 2 配置输出)的依赖项收集在一起。java.util.logging |
要确保将 using 执行的调试日志记录路由到 Log4j 2 中,请将 system 属性设置为 来配置其 JDK 日志记录适配器。java.util.logging java.util.logging.manager org.apache.logging.log4j.jul.LogManager |
使用 YAML 或 JSON 配置 Log4j 2
除了默认的 XML 配置格式外,Log4j 2 还支持 YAML 和 JSON 配置文件。 要将 Log4j 2 配置为使用备用配置文件格式,请将相应的依赖项添加到 Classpath 中,并命名配置文件以匹配您选择的文件格式,如以下示例所示:
格式 | 依赖 | 文件名 |
---|---|---|
YAML |
|
|
JSON 格式 |
|
|