如何自定义 Spring Boot 控制台日志

x33g5p2x  于2022-10-05 转载在 Spring  
字(1.5k)|赞(0)|评价(0)|浏览(653)

在本教程中,我们将学习如何通过在 application.properties 文件中设置 logging.pattern.console 属性来自定义 Spring Boot 控制台模式。最简单的方法是将 DefaultLogbackConfiguration 类中指定的默认模式复制并粘贴为 CONSOLE_LOG_PATTERN 常量,然后开始修改它。以下是默认模式:

private static final String CONSOLE_LOG_PATTERN =
      "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint}"
          + "%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} "
          + "%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} "
          + "%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";

logging.pattern.console 属性仅在我们使用 Logback 日志记录实现时才有效。需要指定的模式也遵循此处指定的 Logback 布局规则。

Spring 还提供了一些自定义 logback 的 Converter 实现来自定义输出,例如 Spring 将约定字“%clr”绑定到 ColorConverter,它返回带有 ANSI 颜色代码的输出。 ‘%wEx’ 是另一个转换词,它绑定到返回自定义异常输出的转换器。查看 DefaultLogbackConfiguration.base() 以了解 Spring 是如何做到的。

示例自定义控制台模式

以下是自定义控制台模式:

src/main/resources/application.properties
spring.main.banner-mode=off  spring.output.ansi.enabled=ALWAYS logging.pattern.console=%clr(%d{yy-MM-dd E HH:mm:ss.SSS}){blue} %clr(%-5p) %clr(${PID}){faint} %clr(---){faint} %clr([%8.15t]){cyan} %clr(%-40.40logger{0}){blue} %clr(:){red} %clr(%m){faint}%n

Spring Boot 还将不同的日志级别映射到此处指定的不同 ANSI 颜色代码;仅当我们不使用 %p 指定我们自己的 %clr 转换词值时才有效,例如 %clr(%5p){green}。

Main Class

@SpringBootApplication public class DemoClass {
  private static final Logger logger = LoggerFactory.getLogger(DemoClass.class);
  public static void main(String[] args) throws InterruptedException {
    ConfigurableApplicationContext context = SpringApplication.run(DemoClass.class, args);
    logger.warn("warning msg");
    logger.error("error msg");
  }
}

相关文章