代码之家  ›  专栏  ›  技术社区  ›  Ashok Koyi

将颜色消息转换为控制台vs文件

  •  0
  • Ashok Koyi  · 技术社区  · 7 年前

    我用的是带log4j2的弹簧靴

    要用Spring引导的ansioutput将彩色/样式的消息写入控制台附加器,我们需要设置 spring.output.ansi.enabled=ALWAYS 在ItILLJ中(我的假设是因为所有IDE都是使用JavaWAVE来启动Java的,它将不会有它自己的控制台,所以默认设置) spring.output.ansi.enabled=DETECT 在IDES中默认不工作)

    但是如果我们设置了这个,SpringBoot也应该向其他附加器写入相同的ansi特殊字符(比如 File appender)和console一起使用,因为属性并不表示我们只需要对console应用颜色格式。

    但是,当我查看日志文件时,在日志消息中看不到任何特殊字符

    有人能解释一下log4j2/spring boot是如何做到这一点的吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Andy Wilkinson    7 年前

    SpringBoot的log4j2默认配置为控制台附加程序和文件附加程序使用不同的模式。控制台附加器的模式如下:

    %clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}
    

    文件附加器的模式如下:

    %d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}
    

    输出的着色是使用 %clr{…}{…} .正如您在上面看到的,它用于控制台附加器的模式,但不用于文件附加器的模式。正是这种差异才允许对控制台输出进行着色。