ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 26.5. 自定义日志配置 ### 26.5. 自定义日志配置 通过将相应的库添加到classpath可以激活各种日志系统,然后在classpath根目录下提供合适的配置文件可以进一步定制日志系统,配置文件也可以通过Spring `Environment`的`logging.config`属性指定。 使用`org.springframework.boot.logging.LoggingSystem`系统属性可以强制Spring Boot使用指定的日志系统,该属性值需要是`LoggingSystem`实现类的全限定名,如果值为`none`,则彻底禁用Spring Boot的日志配置。 **注** 由于日志初始化早于`ApplicationContext`的创建,所以不可能通过`@PropertySources`指定的Spring `@Configuration`文件控制日志,系统属性和Spring Boot外部化配置可以正常工作。 以下文件会根据你选择的日志系统进行加载: 日志系统定制配置Logback`logback-spring.xml`,`logback-spring.groovy`,`logback.xml`或`logback.groovy`Log4j`log4j.properties`或`log4j.xml`Log4j2`log4j2-spring.xml`或`log4j2.xml`JDK (Java Util Logging)`logging.properties`**注** 如果可能的话,建议你使用`-spring`变种形式定义日志配置(例如,使用`logback-spring.xml`而不是`logback.xml`)。如果你使用标准的配置路径,Spring可能不能够完全控制日志初始化。 **注** Java Util Logging从可执行jar运行时会导致一些已知的类加载问题,我们建议尽可能不使用它。 以下是从Spring `Envrionment`转换为System properties的一些有助于定制的配置属性: Spring EnvironmentSystem PropertyComments`logging.exception-conversion-word``LOG_EXCEPTION_CONVERSION_WORD`记录异常使用的关键字`logging.file``LOG_FILE`如果指定就会在默认的日志配置中使用`logging.path``LOG_PATH`如果指定就会在默认的日志配置中使用`logging.pattern.console``CONSOLE_LOG_PATTERN`日志输出到控制台(stdout)时使用的模式(只支持默认的logback设置)`logging.pattern.file``FILE_LOG_PATTERN`日志输出到文件时使用的模式(如果LOG\_FILE启用,只支持默认的logback设置)`logging.pattern.level``LOG_LEVEL_PATTERN`用来渲染日志级别的格式(默认`%5p`,只支持默认的logback设置)`PID``PID`当前的处理进程(process)ID(能够找到,且还没有用作OS环境变量)所有支持的日志系统在解析配置文件时都能获取系统属性的值,具体可以参考`spring-boot.jar`中的默认配置。 **注** 如果想在日志属性中使用占位符,你需要使用[Spring Boot的语法](http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#boot-features-external-config-placeholders-in-properties),而不是底层框架的语法。尤其是使用Logback时,你需要使用`:`作为属性名和默认值的分隔符,而不是`:-`。 **注** 通过覆盖`LOG_LEVEL_PATTERN`(Logback对应`logging.pattern.level`),你可以向日志中添加MDC和其他ad-hoc的内容。例如,将该值设置为`logging.pattern.level=user:%X{user} %5p`,则默认日志格式将包含一个"user"的MDC实体,如果存在的话,比如: ``` 2015-09-30 12:30:04.031 user:juergen INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request ```