【问题标题】:How to colorize Log4j2 output on console in intelliJ?如何在 intelliJ 的控制台上为 Log4j2 输出着色?
【发布时间】:2018-01-27 02:38:50
【问题描述】:

我尝试将配置文件更改为如下所示,但输出仍然是纯白色。如何将其更改为任何颜色?喜欢每个级别都有不同的颜色

代码:

import org.apache.log4j.*;

public class StartUp {

    private static final Logger LOGGER = Logger.getLogger(Class.class.getName());

    public static void main(String[] args) throws Exception {

        LOGGER.trace("Trace Message!");
        LOGGER.debug("Debug Message!");
        LOGGER.info("Info Message!");
        LOGGER.warn("Warn Message!");
        LOGGER.error("Error Message!");
        LOGGER.fatal("Fatal Message!");

配置文件(log4j2.xml):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%highlight{[%d] - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="ALL">
            <AppenderRef ref="CONSOLE"/>
        </Root>
    </Loggers>
</Configuration>

【问题讨论】:

    标签: colors log4j2


    【解决方案1】:

    似乎某些默认值在 2.10.0 中被破坏了。通过添加disableAnsi 选项,我可以恢复上一个版本的颜色。

    <PatternLayout pattern="%highlight{...}" disableAnsi="false"/>
    

    在文档中,据说默认为false,但事实并非如此。

    【讨论】:

    • 在 Log4j 2.10 中更改了默认值,因为 jansi 中的本机代码对某些用户造成了问题。文档应该已经更新,但可能有些地方遗漏了。你能在 Log4j2 问题跟踪器上提出一张票来修复文档吗?拉取请求会更棒。
    • 这是正确答案。将 disableAnsi 更改为“false”后,我的颜色再次开始出现。也许其他人遇到的问题是因为他们试图将颜色模式写入日志文件?此着色仅在控制台/终端中有效。您应该只配置常规日志,而不用对日志文件本身进行着色,并在生产环境中使用 Splunk 等工具。
    • 为什么在控制台打印 disableAnsi=false?
    • 你可能已经把它留在了模式中,在引号之间。这是一个xml参数。
    【解决方案2】:

    使用log4j2的稳定版2.9.1,将LOGGER初始化替换为

    私有静态最终记录器LOGGER = LogManager.getLogger(Class.class.getName());

    有关突出显示控制台附加程序的其他文档: https://logging.apache.org/log4j/2.x/manual/layouts.html

    【讨论】:

    • 你读过我的配置文件了吗?它从字面上复制粘贴你提到的问题,但格式不同。
    • 是的。让我在我的 intellij 实例上验证您的配置。
    • 您的 log4j2 配置正确。它适用于 log4j2 2.9.1 版本,不适用于 log4j2 2.10.1 版本。
    • 哦,我实际上使用的是 2.10.1,我降级到 12.9,谢谢 :)
    • 查看更多赞成的答案,比降级更好
    【解决方案3】:

    对于 IntelliJ,我强烈推荐 Grep Console Plugin

    它可以在不更改源代码的情况下解析控制台输出的日志等等。

    【讨论】:

      【解决方案4】:

      我接受了问题和答案,并创建了一个类似于默认 logback 的彩色输出。

      配置文件(log4j2.xml):

          <?xml version="1.0" encoding="UTF-8"?>
          <Configuration status="WARN" monitorInterval="30">
              <Properties>
                  <Property name="CLR">{FATAL=bright red, ERROR=red, WARN=bright yellow, INFO=Normal, DEBUG=white, TRACE=black}</Property>
                  <Property name="LOG_PATTERN">
                      %highlight{%5p- %d{yy-MM-dd HH:mm:ss.SSS}}${CLR} %clr{${sys:PID}}{magenta}%clr{-}{faint}%clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan}  %highlight{: %m%n%xwEx}${CLR}
                  </Property>
              </Properties>
              <Appenders>
                  <Console name="Console" target="SYSTEM_OUT" follow="true">
                      <PatternLayout pattern="${LOG_PATTERN}" disableAnsi="false"/>
                  </Console>
              </Appenders>
          
              <Loggers>
                  <logger name="org.springframework.boot.autoconfigure.logging" level="info"/>
                  <Root level="debug">
                      <AppenderRef ref="Console"/>
                  </Root>
              </Loggers>
          </Configuration>
      

      【讨论】:

        【解决方案5】:

        我会尝试为这个问题积累解决方案,如果我重复了,我深表歉意。 应该怎么做才能在控制台中启用日志的颜色(仅对 2.10 起的 lo4j2 版本有效,因为默认情况下 jansi 已禁用)

        1) 添加jansi依赖:

        <dependency>
          <groupId>org.fusesource.jansi</groupId>
          <artifactId>jansi</artifactId>
          <version>1.16</version>
        </dependency>
        

        2) 添加虚拟机选项:-Dlog4j.skipJansi=false

        3) 不要忘记在模式中添加 %highlight(下面的 yaml 示例):

        Configuration:
          Appenders:
            Console:
              PatternLayout:
                pattern: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight{%-5level}{STYLE=Logback} %logger.%M - %msg%n'
        

        【讨论】:

          猜你喜欢
          • 2012-03-14
          • 2014-06-27
          • 1970-01-01
          • 2018-12-03
          • 1970-01-01
          • 2017-09-08
          • 1970-01-01
          • 2012-06-15
          相关资源
          最近更新 更多