除了通常由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=debuglogging.level.org.hibernate=error
您还可以使用来设置日志写入文件的位置(除了控制台)logging.file.name。
要配置日志记录系统的更细粒度的设置,您需要使用所支持的本机配置格式LoggingSystem。默认情况下,Spring Boot从系统的默认位置(例如classpath:logback.xmlLogback)拾取本地配置,但是您可以使用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 | 
