如何在intelliJ中控制台上的Log4j2输出着色?

时间:2018-01-27 02:38:51

标签: colors log4j2

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

代码:

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>

4 个答案:

答案 0 :(得分:23)

似乎某些默认值在2.10.0中被破坏了。通过添加=>选项,我可以在最后一个版本中获得颜色。

disableAnsi

在文档中,据说默认为<PatternLayout pattern="%highlight{...}" disableAnsi="false"/> ,但似乎并非如此。

答案 1 :(得分:1)

使用log4j2的稳定版本2.9.1并用

替换LOGGER初始化
  

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

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

答案 2 :(得分:0)

我将尝试为该问题积累解决方案,如果我再三表示歉意。 在控制台中启用日志颜色应采取的措施(仅对自2.10起的lo4j2版本有效,因为默认情况下jansi已禁用)

1)添加jansi依赖项:

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

2)添加VM选项:-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'

答案 3 :(得分:0)

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

它可以解析控制台输出中的日志以及更多内容,而无需更改源代码。

enter image description here