26.5 Custom Log Configuration

各种日志系统可以通过在类路径上包含合适的库来激活,并且可通过在类路径根目录下提供合适的配置文件或在Spring环境属性logging.config中配置的文件进行进一步定制.

您可以通过使用org.springframework.boot.logging.LoggingSystem属性来强制Spring Boot使用一个特定的日志系统. 该属性值必须为LoggingSystem实现类的完全限定名.您还可以使用none属性值来完全禁用Spring Boot的日志配置.

Note

由于日志系统在ApplicationContext创建之前完成初始化,所以在Spring的@Configuration配置类文件中不能通过@PropertySources注入来控制相关日志选项. 只有通过系统属性这一唯一途径来改变日志系统或禁用它.

根据日志系统的不同,下述文件将被加载:

Logging System Customization
Logback logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j2 log4j2-spring.xml, log4j2.xml
JDK(Java Util Logging) logging.properties

Note

在可能的情况下,我们建议您使用带-spring变量为您的日志配置(例如,logback-spring.xml而不是logback.xml).如果您使用标准配置位置,Spring将不能完全控制日志的初始化.

Warning

当使用可执行jar运行程序时,使用Java Util Logging会引发一个类加载的问题.我们建议您尽可能的避免它当你从可执行jar包启动程序时.

为帮助定制,一些其他属性可以考虑从Spring环境转移到系统属性,如下表所述:

所有支持的日志系统在解析配置文件时都可以参考系统属性.在spring-boot.jar包中参考默认配置.

Tip

如果你想在一个日志记录属性使用占位符,您应该使用Spring Boot的语法,而不是底层框架的语法. 值得注意的是,如果你使用Logback,您应该使用:作为属性名和它的默认值的分隔符,而不是使用:-.

Tip

您可以添加MDC和其他特别的内容到日志行, 仅仅需要的是覆写LOG_LEVEL_PATTERN(或Logback的logging.pattern.level). 例如,如果您设置logging.pattern.level=user:%X{user} %5p,那么默认的日志格式包含“用户”MDC条目,如果存在用户,如以下示例所示:

2015-09-30 12:30:04.031 user:someone INFO 22174 --- [nio-8080-exec-0] demo.Controller Handling authenticated request