Logging

Spring Boot 没有强制性的日志依赖,除了 Commons Logging API,该 API 通常由 Spring Framework 提供春季-JCL模块。 要使用 Logback,你需要包含它春季-JCL在阶级路径上。 推荐的方法是通过发酵剂,而这都取决于Spring Boot启动日志. 对于网页应用,你只需要Spring Boot启动网,因为它传递地依赖于测井Starters。 如果你使用 Maven,以下依赖会为你添加日志功能:spring-doc.cadn.net.cn

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring靴有一个LoggingSystem(记录系统)抽象化尝试根据类路径内容配置日志。 如果有Logback,那是首选。spring-doc.cadn.net.cn

如果你只需要对日志做更改,只是设置各种日志机的等级,你可以在application.properties通过使用“logging.level”前缀,如下示例所示:spring-doc.cadn.net.cn

logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
  level:
    org.springframework.web: "debug"
    org.hibernate: "error"

你还可以通过以下方式设置日志将要写入的文件位置(除了控制台之外)logging.file.name.spring-doc.cadn.net.cn

要配置日志系统的更细粒度设置,你需要使用由LoggingSystem(记录系统)有疑问。 默认情况下,Spring Boot 会从系统默认位置获取本地配置(例如classpath:logback.xml用于Logback),但你可以通过使用logging.config财产。spring-doc.cadn.net.cn

配置日志日志进行日志记录

如果你需要对登录进行超出那些自定义的自定义,可以用以下方式实现application.properties你需要添加一个标准的日志回溯配置文件。 你可以添加一个logback.xml将文件存到你的 classpath 根节点以便 logback 查找。 你也可以使用logback-spring.xml如果你想用 Spring Boot 的 Logback 扩展spring-doc.cadn.net.cn

Logback 文档有一个专门的部分,详细介绍了配置

Spring Boot 提供了多种日志返回配置,可以包括在你自己的配置中。 这些包含旨在允许重新应用某些常见的Spring靴惯例。spring-doc.cadn.net.cn

以下文件提供于org/springframework/boot/logging/logback/:spring-doc.cadn.net.cn

此外,还有遗产base.xml提供文件是为了兼容早期版本的 Spring Boot。spring-doc.cadn.net.cn

典型的习俗logback.xml文件大致看起来像这样:spring-doc.cadn.net.cn

<?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(记录系统)为你提供创作:spring-doc.cadn.net.cn

Spring Boot 还通过自定义 Logback 转换器,在控制台上提供不错的 ANSI 彩色终端输出(但不包含日志文件)。 参见CONSOLE_LOG_PATTERNdefaults.xml以示例来说,配置。spring-doc.cadn.net.cn

如果 Groovy 在 classpath 上,你应该可以配置 Logbacklogback.groovy也。 如果存在,优先考虑该设置。spring-doc.cadn.net.cn

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

配置日志返回以支持仅文件输出

如果你想禁用控制台日志并只写输出到文件,你需要自定义logback-spring.xml进口file-appender.xml但又不是console-appender.xml如下例所示:spring-doc.cadn.net.cn

<?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.propertiesapplication.yaml如下例所示:spring-doc.cadn.net.cn

logging.file.name=myapplication.log
logging:
  file:
    name: "myapplication.log"

配置Log4j进行日志记录

如果 Log4j 2 在类路径上,Spring Boot 支持日志配置。 如果你用起始程序来组装依赖,就必须排除Logback,然后再包含Log4j 2。 如果你不使用起始者,至少需要提供春季-JCL除了Log4j 2。spring-doc.cadn.net.cn

推荐路线是通过起始器,虽然需要一些摇晃。 以下示例展示了如何在Maven中设置起始角色:spring-doc.cadn.net.cn

<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提供了几种不同的初始阵容设置方式。 一种方法是使用模块替换。 为此,声明对Log4j 2起始程序的依赖,并告诉Gradle,任何默认日志起始程序的出现都应被Log4j 2起始程序替换,如下示例所示:spring-doc.cadn.net.cn

dependencies {
	implementation "org.springframework.boot:spring-boot-starter-log4j2"
	modules {
		module("org.springframework.boot:spring-boot-starter-logging") {
			replacedBy("org.springframework.boot:spring-boot-starter-log4j2", "Use Log4j2 instead of Logback")
		}
	}
}
Log4j 的起始者收集了常见日志需求的依赖关系(例如让 Tomcat 使用java.util.logging但输出配置时使用Log4j 2)。
以确保调试日志使用java.util.logging路由到 Log4j 2,通过设置java.util.logging.manager系统性质org.apache.logging.log4j.jul.LogManager.

使用YAML或JSON来配置Log4j 2

除了默认的 XML 配置格式外,Log4j 2 还支持 YAML 和 JSON 配置文件。 要配置Log4j 2使用替代配置文件格式,请在类路径中添加相应的依赖关系,并将配置文件命名为与所选文件格式一致,如下示例所示:spring-doc.cadn.net.cn

格式 依赖 文件名

YAMLspring-doc.cadn.net.cn

com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yamlspring-doc.cadn.net.cn

log4j2.yaml + log4j2.ymlspring-doc.cadn.net.cn

JSONspring-doc.cadn.net.cn

com.fasterxml.jackson.core:jackson-databindspring-doc.cadn.net.cn

log4j2.json + log4j2.jsnspring-doc.cadn.net.cn

使用复合配置配置来配置Log4j 2

Log4j 2 支持将多个配置文件合并为单一的复合配置。 要在 Spring Boot 中使用此支持,请配置logging.log4j2.config.override并包含一个或多个次级配置文件的位置。 无论主配置文件源是 Spring Boot 的默认配置,还是标准位置,都将与主配置文件合并log4j.xml,或由logging.config财产。spring-doc.cadn.net.cn

Log4j2 覆盖配置文件位置可以前缀为自选:. 例如optional:classpath:log4j2-override.xml表示log4j2-override.xml只有资源存在时才应该加载。spring-doc.cadn.net.cn