【问题标题】:Set console output color from a pattern in a xml with Logback使用 Logback 从 xml 中的模式设置控制台输出颜色
【发布时间】:2018-03-12 07:07:04
【问题描述】:

我正在使用 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 以便控制台的输出在模式的任何部分都有颜色?

【问题讨论】:

    标签: xml scala


    【解决方案1】:

    查看默认的 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}}"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      相关资源
      最近更新 更多