Java: Spring Boot自定义控制台日志输出的颜色

简述

偶然发现,在Spring Boot中,可以自定义输出日志的颜色(之前其实是有的,但只有日志级别那个地方有颜色).

image-2874

主要改动的就是,日志消息的颜色跟日志级别的颜色统一了.

但还是有几点要说明:

  1. 仅支持Logback日志系统
  2. 控制台输出格式的默认配置在: org.springframework.boot.logging.logback.DefaultLogbackConfiguration.java的CONSOLE_LOG_PATTERN属性;
  3. 在application.properties中配置logging.pattern.console即可覆盖默认配置
  4. 更多配置可以参考: Spring Boot官方文档

源码

java标志
image-2875

完整源码: Gitee仓库

源码很简单,启动类如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@SpringBootApplication
@RestController
public class SpringBootLoggingColorCustomDemoApplication {


    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("/")
    public Map<String,String> hello(){
        log.trace("test trace");
        log.debug("test debug");
        log.warn("test warn");
        log.info("test info");
        log.error("test error");
        return Map.of("Hello","Java");
    }


    public static void main(String[] args) {
        SpringApplication.run(SpringBootLoggingColorCustomDemoApplication.class, args);
    }

}

application.properties配置如下:

spring.output.ansi.enabled=ALWAYS # 启用ANSI输出
logging.level.root=TRACE # 配置日志级别,输出会比较多.默认级别是INFO

# 配置输出格式.
logging.pattern.console=%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(:){red} %clr(%m){%5p} %n

完整源码: Gitee仓库