除了通常由Spring Framework的spring-jcl
模块提供的Commons Logging API之外,Spring Boot没有强制性的日志记录依赖项。要使用Logback,您需要将其包括spring-jcl
在类路径中。推荐的启动方式是通过启动器,这完全取决于spring-boot-starter-logging
。对于Web应用程序,您仅需要spring-boot-starter-web
,因为它暂时依赖于日志记录启动器。如果使用Maven,则以下依赖项会为您添加日志记录:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot有一个LoggingSystem
抽象,它试图根据类路径的内容来配置日志记录。如果可以使用Logback,则它是首选。
如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,则可以application.properties
使用“ logging.level”前缀来进行设置,如以下示例所示:
物产
Yaml
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
您还可以使用来设置日志写入文件的位置(除了控制台)logging.file.name
。
要配置日志记录系统的更细粒度的设置,您需要使用所支持的本机配置格式LoggingSystem
。默认情况下,Spring Boot从系统的默认位置(例如classpath:logback.xml
Logback)拾取本地配置,但是您可以使用logging.config
属性设置配置文件的位置。
8.1. 配置登录以进行日志记录
如果您需要将自定义设置应用于Logback以外的自定义范围,则application.properties
需要添加标准的Logback配置文件。您可以将logback.xml
文件添加到类路径的根目录中,以供登录后查找。logback-spring.xml
如果要使用Spring Boot Logback扩展,也可以使用。
Logback文档有一个专用部分,其中详细介绍了配置。 | |
---|---|
Spring Boot提供了许多included
来自您自己的配置的logback配置。这些包括旨在允许重新应用某些常见的Spring Boot约定。
以下文件提供了org/springframework/boot/logging/logback/
:
defaults.xml
-提供转换规则,模式属性和通用记录器配置。console-appender.xml
-ConsoleAppender
使用添加CONSOLE_LOG_PATTERN
。file-appender.xml
-RollingFileAppender
使用FILE_LOG_PATTERN
和并ROLLING_FILE_NAME_PATTERN
通过适当的设置添加。
此外,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
为您创建的System属性:
${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的外部配置中设置。
通过使用自定义的Logback转换器,Spring Boot还可以在控制台上提供一些不错的ANSI颜色终端输出(但不在日志文件中)。看到CONSOLE_LOG_PATTERN
在defaults.xml
一个示例配置。
如果Groovy在类路径上,那么您也应该能够配置Logback logback.groovy
。如果存在,则优先考虑此设置。
Groovy配置不支持Spring扩展。logback-spring.groovy 不会检测到任何文件。 |
|
---|---|
8.1.1. 配置仅文件输出的Logback
如果要禁用控制台日志记录并且仅将输出写入文件,则需要一个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
,如以下示例所示:
物产
Yaml
logging.file.name=myapplication.log
8.2. 配置Log4j进行日志记录
如果Spring Boot在类路径上,则它支持Log4j 2进行日志记录配置。如果使用启动器来组装依赖项,则必须排除Logback,然后改为包括log4j 2。如果您不使用启动器,则spring-jcl
除了Log4j 2之外,还需要提供(至少)。
推荐的路径是通过启动器,即使它需要一些摇晃。以下示例显示了如何在Maven中设置启动器:
<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中设置启动器的一种方法:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
}
configurations.all {
resolutionStrategy.dependencySubstitution.all { dependency ->
if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.module == 'spring-boot-starter-logging') {
dependency.useTarget("org.springframework.boot:spring-boot-starter-log4j2:$dependency.requested.version", 'Use Log4j2 instead of Logback')
}
}
}
}
Log4j入门人员将依赖关系集中在一起,以满足常见的日志记录要求(例如使用Tomcat,java.util.logging 但使用Log4j 2配置输出)。 |
|
---|---|
为了确保将使用进行的调试日志记录java.util.logging 路由到Log4j 2中,请将系统属性设置为,以配置其JDK日志记录适配器。 java.util.logging.manager``org.apache.logging.log4j.jul.LogManager |
|
---|---|
8.2.1. 使用YAML或JSON配置Log4j 2
除了默认的XML配置格式外,Log4j 2还支持YAML和JSON配置文件。要将Log4j 2配置为使用备用配置文件格式,请将适当的依赖项添加到类路径中,并为您的配置文件命名以匹配您选择的文件格式,如以下示例所示:
格式 | 依存关系 | 档案名称 |
---|---|---|
YAML | com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yaml |
log4j2.yaml + log4j2.yml |
JSON格式 | com.fasterxml.jackson.core:jackson-databind |
log4j2.json + log4j2.jsn |