英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/howto-logging.html
GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot/reference
83、日志
Spring Boot 没有强制日志依赖项,除了 Commons Logging API,它通常由 Spring Framework 的 spring-jcl 模块提供。要使用 Logback,你需要在类路径中包含它和 spring-jcl。最简单的方法是通过 starters,它们都依赖于 spring-boot-starter-logging。对于 web 应用程序,你只需要 spring-boot-starter-web,因为它传递依赖于日志 starter。如果你使用 Maven,以下依赖项会为你添加日志:
org.springframework.boot
spring-boot-starter-web
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”属性设置配置文件的位置。
83.1、为日志配置 Logback
如果将 logback.xml 放在类路径的根目录中,则会从那里(或从 logback-spring.xml 中,以利用 Boot 提供的模板功能)获取它。Spring Boot 提供了一个默认的基本配置,如果你想设置级别,可以包括它,如下面示例所示:
如果查看 spring-boot jar 中的 base.xml,可以看到它使用了一些有用的系统属性,而 LoggingSystem 负责为你创建这些属性:
(1)${PID}:当前进程 ID。
(2)${LOG_FILE}:是否在 Boot 的外部配置中设置了 logging.file。
(3)${LOG_PATH}:是否在 Boot 的外部配置中设置了 logging.path(表示日志文件所在的目录)。
(4)${LOG_EXCEPTION_CONVERSION_WORD}:是否在 Boot 的外部配置中设置了 logging.exception-conversion-word。
Spring Boot 还通过使用自定义 Logback 转换器在控制台 (但不在日志文件中) 上提供了一些不错的 ANSI 颜色终端输出。有关详细信息,请参阅默认 base.xml 配置。
如果 Groovy 在类路径上,你也应该能够使用 logback.groovy 配置 Logback。如果存在,则优先选择此设置。
83.1.1、只为文件输出配置 Logback
如果要禁用控制台日志并仅将输出写入文件springboot日志配置及输出,则需要一个自定义 logback-spring.xml,该文件导入 file-appender.xml,而不是 console-appender.xml,如下面示例所示:
你还需要将 logging.file 添加到 application.properties 中,如下面示例所示:
logging.file=myapplication.log
83.2、为日志配置 Log4j
如果 Log4j 2 位于类路径上,则 Spring Boot 支持它进行日志配置。如果你使用 starters 来组装依赖项,则必须排除 Logback,然后包含 log4j 2。如果不使用 starters,除了 Log4j 2 之外,还需要提供(至少)spring-jcl。( )
最简单的路径可能是通过 starters,尽管它需要对 exclude 进行一些调整。下面的示例展示了如何在 Maven 中设置 starters:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
下面的示例展示了在 Gradle 中设置 starters 的一种方法:
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 starters 将常见日志需求的依赖项聚集在一起(例如让 Tomcat 使用 java.util.Log,但使用 Log4j 2 配置输出)。有关更多详细信息,请参见 Actuator Log4j 2 示例,并查看其运行情况。( )
注释:要确保将使用 java.util.logging 执行的调试日志路由到 Log4j 2,请通过将 java.util.logging.manager 系统属性设置为 org.apache.logging.log4j.jul.LogManager 来配置其 JDK 日志适配器。( )
83.2.1、使用 YAML 或 JSON 配置 Log4j 2
除了默认的 XML 配置格式,Log4j 2 还支持 YAML 和 JSON 配置文件。要将 Log4j 2 配置为使用替代的配置文件格式,请将适当的依赖项添加到类路径springboot日志配置及输出,并将配置文件命名为与所选文件格式匹配,如下面示例所示:
格式 依赖项 文件名称
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
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22