如何使用log4j2的高亮模式打印彩色日志?

5

我是log4j2的新手,我想为不同级别的日志打印不同颜色。我使用eclipse ide开发java程序,并使用log4j2进行应用程序日志记录。 这是我的log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
   <Console name="STDOUT" target="SYSTEM_OUT">
     <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
   </Console>
  </Appenders>
   <loggers>
  <Logger name="org.apache.log4j.xml" level="all"/>
    <root level="all">
      <appender-ref ref="STDOUT"/>
    </root>
  </loggers>
</Configuration>

当我执行log4j2示例时,我在Eclipse控制台上得到以下结果。
[32m15:56:30.536 DEBUG com.syn.test.Test.main() @15 - this is debug message
[m[32m15:56:30.539 DEBUG com.syn.test.Test.main() @19 - this is debug messge 
[m

现在我的问题是如何在Eclipse控制台中为不同级别的日志打印不同颜色。

这篇回答可能会有所帮助:https://dev59.com/OmEh5IYBdhLWcg3w0WVP - ashosborne1
这个答案在Eclipse IDE控制台中也会得到相同的结果。 - madhu
3个回答

5
Eclipse市场的ANSI控制台插件可以完成此任务。它非常好用,而且在Windows和Unix系统上都可以看到带有颜色的日志。

你能提供一个链接吗? - Duncan Calvert
在Eclipse中: 帮助 -> Eclipse市场 -> 查找: Ansi,然后安装它。 - jhas

3
这个高亮和颜色语法在大多数Unix和Mac终端上都有效,但显然不适用于Windows DOS控制台(根据this)。
不幸的是,我非常怀疑Eclipse控制台支持使用ANSI转义代码进行高亮和颜色。
更新: 可以使用Jansi实现Windows的颜色支持。

意味着我们无法在Eclipse控制台和Windows DOS控制台中以彩色打印日志。是否有使用log4j2打印日志的方法? - madhu
你可以打印日志,但是你看不到颜色或高亮显示。 - Remko Popma
这两个功能在log4j2.x中都可用,我需要它们。 - madhu
我更新了我的回答:你可以使用Jansi在Windows控制台中获取颜色。 - Remko Popma
Jansi网址在我的系统中根本无法打开。它显示此页面不可用。 - madhu

0

我使用IntelliJ IDEAjcabi-log获得了成功。

Maven依赖:

<dependency>
  <groupId>com.jcabi</groupId>
  <artifactId>jcabi-log</artifactId>
  <version>LATEST</version>
</dependency>

示例 PatternLayout

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%highlight{%level}{FATAL=bg_red, ERROR=red, WARN=yellow, INFO=green, DEBUG=blue}] [%t]: %logger{36}.%M@L%L - %msg%n" disableAnsi="false"/>

保留disableAnsi="false"属性非常重要,以使颜色正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接