使用Logback从xml中的模式设置控制台输出颜色

时间:2017-04-19 19:45:25

标签: xml scala

我正在使用Scala Logback classic进行日志记录,我希望以彩色方式发送预制邮件的某些部分。

如果我正在使用println,我只需输入:

println(Console.RED + "Message goes in red" + Console.RESET + ", message now is default")

返回的内容如下:消息为红色,消息现在为默认值(粗体表示红色)。

但是对于logback它有所不同,它的模式是在xml中设置的,我有以下设置:

<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>

返回:702 [run-main-0] WARN className MESSAGE

任何人都可以猜到,它不会接受Console.RED来改变颜色。我知道\u001B[31m它等同于Console.RED,但如果我将模式更改为:

%-4relative \u001B[31m[%thread] %-5level %logger{35} - %msg%n

它只会返回702 \u001B[31m[run-main-0] WARN className MESSAGE

我的问题如下,如何设置xml以使控制台的输出在模式的任何部分都有颜色?

1 个答案:

答案 0 :(得分:0)

请参阅默认的Spring logback配置以获得一个好例子。

<!-- from org/springframework/boot/logging/logback/base.xml -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

<!--  default spring pattern with marker -->
<property name="CONSOLE_LOG_PATTERN" value="${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 %marker %n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>