【问题标题】:How to enable ANSI colors with Log4j2 on Windows Terminal?如何在 Windows 终端上使用 Log4j2 启用 ANSI 颜色?
【发布时间】:2021-01-01 18:15:50
【问题描述】:

与 CMD 和 PowerShell 不同,新的 Windows Terminal 支持开箱即用的 ANSI 颜色。快速测试程序可以确认一切正常:

public class Color {
    public static void main(String[] args) {
        System.out.println("\u001b[32mHello, World\n\u001b[0m");
    }
}

不过,Log4j2 似乎并没有意识到这一点。我的 PatternLayout 中有这个序列:

%highlight{%-5level}{FATAL=bg_red white, ERROR=red, WARN=yellow, INFO=green, DEBUG=blue}

这适用于 macOS 和 Linux,但不适用于 Windows。查看docs,我有disableAnsinoConsoleNoAnsi,但默认值似乎是我想要的,显式设置它们没有任何效果。

我确实确保在我的项目中包含了 JANSI,尽管我认为它没有必要,但它也没有任何区别。

为了让颜色发挥作用,我缺少什么选项?

【问题讨论】:

    标签: java log4j ansi-colors


    【解决方案1】:

    根据docs,我使用了系统属性log4j.skipJansi

    例如,在 Gradle 中,您可以如下修改 test 任务的系统属性(使用 Kotlin DSL):

    tasks.withType<Test> {
        systemProperty("log4j.skipJansi", "false")
    }
    
    // don't forget to add jANSI to your dependencies
    dependencies {
        :
        api(group = "org.fusesource.jansi", name = "jansi", version = "1.18")
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 2021-03-03
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 2012-01-11
      • 2019-07-03
      相关资源
      最近更新 更多