Spring Boot日志输出(如何指南)
我阅读了Spring Boot的日志输出(如何指南)的官方文档,并进行了翻译。
72. 日志输出的指南
另外,日志输出(简介)已经整理到Spring Boot的日志输出(简介)中。
72. 日志设置
Spring Boot对于必需的日志系统没有依赖(不包括commons-logging),可以从多个日志系统中选择实现。如果使用Logback,则需要将其包含在依赖中。最简单的方法是添加具有所有依赖项的”spring-boot-starter-logging”。然而,如果是Web应用程序,只需添加”spring-boot-starter-web”,”spring-boot-starter-logging”将在传递依赖中自动添加。以下是Maven的配置示例。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot具有基于类路径的抽象日志系统来进行日志配置。如果Logback可用,则会首先采用它。如果日志配置仅涉及日志级别,则可以使用application.properties中的前缀“logging.level”进行配置。
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
另外,如果要进行文件输出而不仅仅是控制台输出,则可以使用logging.file来设置输出文件的位置。如果要进行更详细的日志配置,则需要使用日志系统支持的本地配置格式。Spring Boot会从系统的默认位置(如classpath:logback.xml)采用本地配置,但也可以使用logging.config属性来设置配置文件的位置。
72.1. Logback配置设置
在类路径的根目录下放置logback.xml (或logback-spring.xml),它将被采用。
如果想要设置日志级别,Spring Boot提供了可包含的默认配置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
如果查看Spring Boot JAR中的base.xml,可以看到在构建日志系统时使用了一些有用的系统属性。例如以下属性。
-
- ${PID} 現在のプロセスID
-
- ${LOG_FILE} logging.fileが設定されている場合
-
- ${LOG_PATH} logging.pathが設定されている場合(ログファイルのパス)
- ${LOG_EXCEPTION_CONVERSION_WORD} logging.exception-conversion-wordが設定されている場合
Spring Boot在将日志输出到控制台时提供了ANSI彩色终端的支持(不适用于日志文件的输出)。请参考默认的base.xml获取更多详细信息。
如果classpath上存在Groovy,可以使用logback.groovy文件进行Logback配置(如果存在该文件,则优先使用)。
72.1.1. 配置Logback使其仅将日志输出到文件。
如果希望停止控制台输出日志并仅将其输出到文件中,您需要自定义导入file-appender.xml而不是console-appender.xml的logback-spring.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>
还需要在application.properties中添加logging.file的设置。
logging.file=myapplication.log
72.2. Log4j配置
Spring Boot支持Log4j或Log4j2作为日志系统,但只能选择其中一个配置在类路径上。如果使用Starter Pom,则需要排除对Logback的依赖,并指定使用Log4j和任意版本的Log4j。如果不使用Starter Pom,则需要指定使用commons-logging以及Log4j和任意版本的Log4j。以下配置可能是最简单的配置:
<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-log4j</artifactId>
</dependency>
使用Log4j 2时,只需将spring-boot-starter-log4j替换为spring-boot-starter-log4j2即可。
72.2.1. 在Log4j 2的设置中使用YAML或JSON格式
Log4j 2的配置文件支持默认的XML格式,并且还支持YAML或JSON格式。如果要使用YAML或JSON,则需要在类路径中添加适当的依赖关系,并且还需要根据选择的文件格式为配置文件命名。
com.fasterxml.jackson.dataformat:jackson-dataformat-yamllog4j2.yaml
log4j2.ymlJSONcom.fasterxml.jackson.core:jackson-databindlog4j2.json
log4j2.jsn