log4j 2 adding multiple colors to console appender

前端 未结 6 606
耶瑟儿~
耶瑟儿~ 2020-12-13 04:17

Hi I just downloaded and configured log4j-2. I am stuck on applying color codes to the SlowConsole console appender. My console appender is like below.

相关标签:
6条回答
  • 2020-12-13 04:22

    I think I found the solution. I downloaded log4j2-core-sources.jar and traced the source. You can write it as below;

    <Console name="SlowConsole" target="SYSTEM_OUT">
         <PatternLayout disableAnsi="false"  pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
    </Console>
    

    I think log4j2 documentation and its examples may need to be updated.

    0 讨论(0)
  • 2020-12-13 04:25

    When using the eclipse console, its nice to see errors in red and all other logs in black. You can do this using Filters:

    <Appenders>
        <Console name="ConsoleStdOut" target="SYSTEM_OUT">
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
            <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <Console name="ConsoleStdErr" target="SYSTEM_ERR">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="ConsoleStdOut" />
            <AppenderRef ref="ConsoleStdErr" />
        </Root>
    </Loggers>
    
    0 讨论(0)
  • 2020-12-13 04:29
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT" follow="true">
                <PatternLayout
                        pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
            </Console>
        </Appenders>
        <Loggers>
            <Root level="info">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>
    

    This worked in my Spring Boot application.

    But I am not sure if it will work without Spring Boot.

    0 讨论(0)
  • 2020-12-13 04:36

    1 : yes it's ok! and you can add some other options. see http://logging.apache.org/log4j/2.x/manual/configuration.html

    2 : you can use a HTMLLayout for your file appender.

    see http://logging.apache.org/log4j/2.x/manual/layouts.html

    and http://www.tutorialspoint.com/log4j/log4j_htmllayout.htm

    0 讨论(0)
  • 2020-12-13 04:37

    Spring Boot style:

    <Properties>
      <Property name="LOG_PATTERN">
        %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red, ERROR=red, WARN=yellow, INFO=green, DEBUG=green, TRACE=green} %style{${sys:PID}}{magenta} --- [%15.15t] %style{%-40.40c{1.}}{cyan} : %m%n%ex
      </Property>
    </Properties>
    
    <Appenders>
      <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="${LOG_PATTERN}"/>
      </Console>
    </Appenders>
    
    0 讨论(0)
  • 2020-12-13 04:47

    For a log4j2 colored output that looks very close to Spring Boot's default logback console output:

        <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} %style{${sys:PID}}{magenta} [%15.15t] %style{%-40.40C{1.}}{cyan} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
        </Console>
    

    0 讨论(0)
提交回复
热议问题