Logging
Spring Boot 没有强制性的日志依赖,除了 Commons Logging API,该 API 通常由 Spring Framework 提供春季-JCL模块。
要使用 Logback,你需要包含它春季-JCL在阶级路径上。
推荐的方法是通过发酵剂,而这都取决于Spring Boot启动日志.
对于网页应用,你只需要Spring Boot启动网,因为它传递地依赖于测井Starters。
如果你使用 Maven,以下依赖会为你添加日志功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring靴有一个LoggingSystem(记录系统)抽象化尝试根据类路径内容配置日志。
如果有Logback,那是首选。
如果你只需要对日志做更改,只是设置各种日志机的等级,你可以在application.properties通过使用“logging.level”前缀,如下示例所示:
-
Properties
-
YAML
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
level:
org.springframework.web: "debug"
org.hibernate: "error"
你还可以通过以下方式设置日志将要写入的文件位置(除了控制台之外)logging.file.name.
要配置日志系统的更细粒度设置,你需要使用由LoggingSystem(记录系统)有疑问。
默认情况下,Spring Boot 会从系统默认位置获取本地配置(例如classpath:logback.xml用于Logback),但你可以通过使用logging.config财产。
配置日志日志进行日志记录
如果你需要对登录进行超出那些自定义的自定义,可以用以下方式实现application.properties你需要添加一个标准的日志回溯配置文件。
你可以添加一个logback.xml将文件存到你的 classpath 根节点以便 logback 查找。
你也可以使用logback-spring.xml如果你想用 Spring Boot 的 Logback 扩展,
| Logback 文档有一个专门的部分,详细介绍了配置。 |
Spring Boot 提供了多种日志返回配置,可以包括在你自己的配置中。
这些包含旨在允许重新应用某些常见的Spring靴惯例。
以下文件提供于org/springframework/boot/logging/logback/:
-
defaults.xml- 提供转换规则、模式属性和常见记录器配置。 -
console-appender.xml- 添加一个ConsoleAppender使用CONSOLE_LOG_PATTERN. -
structured-console-appender.xml- 添加一个ConsoleAppender在CONSOLE_LOG_STRUCTURED_FORMAT. -
file-appender.xml- 添加一个滚动文件附录使用FILE_LOG_PATTERN和ROLLING_FILE_NAME_PATTERN配合合适的设置。 -
structured-file-appender.xml- 添加一个滚动文件附录使用ROLLING_FILE_NAME_PATTERN结构化日志在FILE_LOG_STRUCTURED_FORMAT.
此外,还有遗产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(记录系统)为你提供创作:
-
${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的外部配置。
Spring Boot 还通过自定义 Logback 转换器,在控制台上提供不错的 ANSI 彩色终端输出(但不包含日志文件)。
参见CONSOLE_LOG_PATTERN在defaults.xml以示例来说,配置。
如果 Groovy 在 classpath 上,你应该可以配置 Logbacklogback.groovy也。
如果存在,优先考虑该设置。
Groovy 配置不支持Spring扩展。
任何logback-spring.groovy文件不会被检测到。 |
配置日志返回以支持仅文件输出
如果你想禁用控制台日志并只写输出到文件,你需要自定义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如下例所示:
-
Properties
-
YAML
logging.file.name=myapplication.log
logging:
file:
name: "myapplication.log"
配置Log4j进行日志记录
如果 Log4j 2 在类路径上,Spring Boot 支持日志配置。
如果你用起始程序来组装依赖,就必须排除Logback,然后再包含Log4j 2。
如果你不使用起始者,至少需要提供春季-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提供了几种不同的初始阵容设置方式。 一种方法是使用模块替换。 为此,声明对Log4j 2起始程序的依赖,并告诉Gradle,任何默认日志起始程序的出现都应被Log4j 2起始程序替换,如下示例所示:
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使用替代配置文件格式,请在类路径中添加相应的依赖关系,并将配置文件命名为与所选文件格式一致,如下示例所示:
| 格式 | 依赖 | 文件名 |
|---|---|---|
YAML |
|
|
JSON |
|
|