変換パターンでlog4j(およびいくつかのラッパー)を使用します"%r [%t] %p %c %x - %m%n"
。左端の値(%r
)は、実行が開始されてから経過したミリ秒です。この値をmm:ssまたはmm:ss:milisecsで出力したいのですが、それでも現在の時刻ではなく、経過時間にしたいのです。
どうすればこれを達成できますか?
独自のレイアウトを作成する必要があります。最も簡単なのは、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
次のようにレイアウトパターンを設定してみてください。
<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>
使用できるすべてのパターンについては、ここで参照できます。