Java Log4j 2:如何在Windows控制台上启用ANSI颜色?
我尝试使用Windows 10命令行在控制台上打印彩色消息,但没有成功。根据Log4j 2,我应该将Jansijar添加到我的打印应用程序中,并将属性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{ 私有静态最终记
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(“你好!”);
}
}
因此,消息包含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>