除了通常由Spring Framework的spring-jcl模块提供的Commons Logging API之外,Spring Boot没有强制性的日志记录依赖项。要使用Logback,您需要将其包括spring-jcl在类路径中。推荐的启动方式是通过启动器,这完全取决于spring-boot-starter-logging。对于Web应用程序,您仅需要spring-boot-starter-web,因为它暂时依赖于日志记录启动器。如果使用Maven,则以下依赖项会为您添加日志记录:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

Spring Boot有一个LoggingSystem抽象,它试图根据类路径的内容来配置日志记录。如果可以使用Logback,则它是首选。
如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,则可以application.properties使用“ logging.level”前缀来进行设置,如以下示例所示:
物产
Yaml

  1. logging.level.org.springframework.web=debug
  2. logging.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文件如下所示:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
  4. <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
  5. <root level="INFO">
  6. <appender-ref ref="CONSOLE" />
  7. </root>
  8. <logger name="org.springframework.web" level="DEBUG"/>
  9. </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_PATTERNdefaults.xml一个示例配置。
如果Groovy在类路径上,那么您也应该能够配置Logback logback.groovy。如果存在,则优先考虑此设置。

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

8.1.1. 配置仅文件输出的Logback

如果要禁用控制台日志记录并且仅将输出写入文件,则需要一个logback-spring.xml导入file-appender.xml但不导入的自定义console-appender.xml,如以下示例所示:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  4. <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
  5. <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
  6. <root level="INFO">
  7. <appender-ref ref="FILE" />
  8. </root>
  9. </configuration>

您还需要添加logging.file.nameapplication.properties或中application.yaml,如以下示例所示:
物产
Yaml

  1. logging.file.name=myapplication.log

8.2. 配置Log4j进行日志记录

如果Spring Boot在类路径上,则它支持Log4j 2进行日志记录配置。如果使用启动器来组装依赖项,则必须排除Logback,然后改为包括log4j 2。如果您不使用启动器,则spring-jcl除了Log4j 2之外,还需要提供(至少)。
推荐的路径是通过启动器,即使它需要一些摇晃。以下示例显示了如何在Maven中设置启动器:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter</artifactId>
  8. <exclusions>
  9. <exclusion>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-logging</artifactId>
  12. </exclusion>
  13. </exclusions>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-log4j2</artifactId>
  18. </dependency>

以下示例显示了在Gradle中设置启动器的一种方法:

  1. dependencies {
  2. compile 'org.springframework.boot:spring-boot-starter-web'
  3. }
  4. configurations.all {
  5. resolutionStrategy.dependencySubstitution.all { dependency ->
  6. if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.module == 'spring-boot-starter-logging') {
  7. dependency.useTarget("org.springframework.boot:spring-boot-starter-log4j2:$dependency.requested.version", 'Use Log4j2 instead of Logback')
  8. }
  9. }
  10. }
  11. }
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