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