Java 如何在Windows终端上使用Log4j2启用ANSI颜色?

Java 如何在Windows终端上使用Log4j2启用ANSI颜色?,java,log4j,ansi-colors,Java,Log4j,Ansi Colors,与CMD和PowerShell不同,新版本支持开箱即用的ANSI颜色。快速测试程序可以确认一切正常: public class Color { public static void main(String[] args) { System.out.println("\u001b[32mHello, World\n\u001b[0m"); } } Log4j2似乎没有意识到这一点。我的PatternLayout中有以下序列: %highligh

与CMD和PowerShell不同,新版本支持开箱即用的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。查看,我有
disableAnsi
noconsolenonansi
,但默认值似乎是我想要的,显式设置它们没有任何效果

我确实确保我的项目中包括了JANSI,尽管我认为这不必要,但这也没有任何区别

要使颜色正常工作,我缺少什么选项?

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

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

tasks.withType{
systemProperty(“log4j.skipJansi”、“false”)
}
//别忘了将jANSI添加到依赖项中
依赖关系{
:
api(group=“org.fusesource.jansi”,name=“jansi”,version=“1.18”)
}
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")
}