web-dev-qa-db-ja.com

log4j 2コンソールアペンダーに複数の色を追加

こんにちは、log4j-2をダウンロードして構成しました。 SlowConsoleコンソールアペンダーにカラーコードを適用することに固執しています。私のコンソールアペンダーは以下のようなものです。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SlowConsole" 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>
        <File name="File" fileName="C:\log\out.txt">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />
        </File>
    </Appenders>
    <Loggers>
        <logger name="org.abc.ea.web" level="ALL" additivity="false">
            <!--Log4j for the WEB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <logger name="org.abc.ea.ejb" level="ALL" additivity="false">
            <!--Log4j for the EJB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File" />
        </Root>
    </Loggers>
</Configuration>

2つの質問があります。

  1. 私はlog4jは初めてですが、これはxml設定ファイルを書く正しい方法ですか?

  2. 各ログレベルに2つのカラーコードを追加するにはどうすればよいですか?

    例:DEBUG = green->は薄緑色のフォントを出力しますが、dimboldにする必要があります

29
Rasika Perera

私は解決策を見つけたと思います。 log4j2-core-sources.jarをダウンロードし、 source をトレースしました。以下のように書くことができます。

<Console name="SlowConsole" target="SYSTEM_OUT">
     <PatternLayout 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>

Log4j2 documentation とその例を更新する必要があると思います。

40
Rasika Perera

Spring Bootのデフォルトのログバックコンソール出力に非常に近いlog4j2カラー出力の場合:

    <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>

Console Screenshot

19

Eclipseコンソールを使用する場合、エラーが赤で表示され、他のすべてのログが黒で表示されます。これを行うには、フィルターを使用します。

<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>
7
B_St
<?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>

これは私のSpring Bootアプリケーションで機能しました。

しかし、Spring Bootなしで機能するかどうかはわかりません。

3
BaiJiFeiLong

1:はい、大丈夫です!他のオプションを追加できます。 http://logging.Apache.org/log4j/2.x/manual/configuration.html を参照してください

2:ファイルアペンダーにHTMLLayoutを使用できます。

http://logging.Apache.org/log4j/2.x/manual/layouts.html を参照してください

および http://www.tutorialspoint.com/log4j/log4j_htmllayout.htm

2
Taher Khorshidi

スプリングブーツスタイル:

<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>
1
yuen26