关于日志

Spring Boot没有强制日志记录依赖性,除了Commons Logging API,这通常由Spring Framework的spring-jcl模块提供。要使用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可用,则它是第一选择。
如果您需要对记录进行的唯一更改是设置各种记录器的级别,您可以使用“logging.level”前缀在application.properties中执行此操作,如以下示例所示:

logging.level.org.springframework.web=DEBUG logging.level.org.hibernate=ERROR

您还可以使用“logging.file”设置要写入日志的文件的位置(除控制台外)。
要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式。默认情况下,Spring Boot从系统的默认位置(例如Logback的classpath:logback.xml)中选择本机配置,但您可以使用“logging.config”属性设置配置文件的位置。

配置 Logback

如果将logback.xml放在类路径的根目录中,则从那里(或从logback-spring.xml中获取)以利用Boot提供的模板功能。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,你会发现它使用了LoggingSystem为你创建的一些有用的System属性:

  • $ {PID}:当前进程ID。
  • $ {LOG_FILE}:是否在Boot的外部配置中设置了logging.file。
  • $ {LOG_PATH}:是否在Boot的外部配置中设置了logging.path(表示日志文件所在的目录)。
  • $ {LOG_EXCEPTION_CONVERSION_WORD}:是否在Boot的外部配置中设置了logging.exception-conversion-word。

Spring Boot还通过使用自定义Logback转换器在控制台上(但不在日志文件中)提供了一些漂亮的ANSI颜色终端输出。 有关详细信息,请参阅默认的base.xml配置。

如果Groovy在类路径上,您应该能够使用logback.groovy配置Logback。 如果存在,则优先考虑此设置。

配置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添加到application.properties,如以下示例所示:

logging.file=myapplication.log

配置 Log4j

Spring Boot支持Log4j 2进行日志记录配置(如果它在类路径上)。 如果使用启动器来组装依赖项,则必须排除Logback,然后包含log4j 2。 如果你不使用启动器,除了Log4j 2之外,还需要提供(至少)spring-jcl。

最简单的方式可能是通过启动器,即便需要排除Logback。以下示例显示如何在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'
compile 'org.springframework.boot:spring-boot-starter-log4j2'
}
configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
Log4j启动程序将常见日志记录要求的依赖关系聚集在一起(例如让Tomcat使用java.util.logging但使用Log4j 2配置输出)。 有关详细信息,请参阅Actuator Log4j 2事例并查看其实际操作。
要确保使用java.util.logging执行的调试日志记录路由到Log4j 2,请通过将java.util.logging.manager系统属性设置为org.apache.logging.log4j.jul.LogManager来配置其JDK日志记录适配器
配置Spring Boot日志
Tagged on:     

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注