Java Log4j 2:如何在Windows控制台上启用ANSI颜色?

Java Log4j 2:如何在Windows控制台上启用ANSI颜色?,java,windows,console,log4j,ansi,Java,Windows,Console,Log4j,Ansi,我尝试使用Windows 10命令行在控制台上打印彩色消息,但没有成功。根据Log4j 2,我应该将Jansijar添加到我的打印应用程序中,并将属性Log4j.skipJansi设置为false,以便在Windows上启用ANSI支持。请你检查一下,说出我做错了什么: 以下代码是我目前的工作: import org.apache.logging.log4j.LogManager; 导入org.apache.logging.log4j.Logger; 公共类LoggerTest{ 私有静态最终记

我尝试使用Windows 10命令行在控制台上打印彩色消息,但没有成功。根据Log4j 2,我应该将Jansijar添加到我的打印应用程序中,并将属性
Log4j.skipJansi
设置为
false
,以便在Windows上启用ANSI支持。请你检查一下,说出我做错了什么:

  • 以下代码是我目前的工作:
  • import org.apache.logging.log4j.LogManager;
    导入org.apache.logging.log4j.Logger;
    公共类LoggerTest{
    私有静态最终记录器Logger=LogManager.getLogger();
    公共静态void main(字符串[]args)引发异常{
    logger.info(“你好!”);
    }
    }
    
  • 以下代码是Log4j 2配置文件:
  • 
    


    因此,消息包含ANSI转义码,但命令行不会解释这些转义码。但是,如果我尝试复制/粘贴此输出,并使用另一个bat文件直接回显它,则会看到彩色消息

    当我向
    添加
    disableAnsi=“false”
    适当性时,它起了作用


    对于跨操作系统渲染,我必须同时包括Jansi和Jcabi-

    
            <dependency>
                <groupId>org.fusesource.jansi</groupId>
                <artifactId>jansi</artifactId>
                <version>1.18</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.jcabi</groupId>
                <artifactId>jcabi-log</artifactId>
                <version>LATEST</version>
                <optional>true</optional>
            </dependency>
    
    
    org.fusesource.jansi
    詹西
    1.18
    真的
    com.jcabi
    jcabi测井
    最新的
    真的
    
    在我上面的配置文件中
    disableAnsi
    已设置为
    false
    ,但它不起作用。我得到的正是这种行为。您最终找到解决方案了吗?调试了
    ConsoleAppender
    ,发现jansi的本机库加载失败(在我的例子中,
    java.io.tmpdir
    被相对路径覆盖,导致JNI加载程序出错)-修复后,颜色恢复正常
    @echo off
    javac -cp lib\*;. LoggerTest.java
    java -cp lib\*;. LoggerTest
    pause 
    exit 
    
     <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%highlight{%p} %logger{-2} - %m{FATAL=red blink,ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold}%n" disableAnsi="false"/>
            </Console>
        </Appenders> 
    
    
            <dependency>
                <groupId>org.fusesource.jansi</groupId>
                <artifactId>jansi</artifactId>
                <version>1.18</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.jcabi</groupId>
                <artifactId>jcabi-log</artifactId>
                <version>LATEST</version>
                <optional>true</optional>
            </dependency>