0

変換パターンでlog4j(およびいくつかのラッパー)を使用します"%r [%t] %p %c %x - %m%n"。左端の値(%r)は、実行が開始されてから経過したミリ秒です。この値をmm:ssまたはmm:ss:milisecsで出力したいのですが、それでも現在の時刻ではなく、経過時間にしたいのです。

どうすればこれを達成できますか?

4

2 に答える 2

1

独自のレイアウトを作成する必要があります。最も簡単なのは、formatメソッドを拡張org.apache.log4j.PatternLayoutして上書きすることです。

com.stackoverflow.MyPattern

public class MyPattern extends PatternLayout {
@Override public String format(LoggingEvent event) {
    return "MyOwnString" + super.format(event);
}

次に、通常どおりに構成します。

log4j.appender.A1.layout=com.stackoverflow.MyPattern
log4j.appender.A1.layout=com.farmnet365.main.impl.jpa.extensions.TimeElapsedPatternLayout

レイアウトは好きなように拡張できます。ここに、jodaを使用して経過時間を追加する完全な実例があります:gist

于 2017-03-12T09:29:38.907 に答える
-1

次のようにレイアウトパターンを設定してみてください。

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:sss z}] %5p %c{2}: %m%n" />
    </layout>
</appender>

使用できるすべてのパターンについては、ここで参照できます。

于 2013-02-05T04:39:22.527 に答える