我使用log4j(和一些包裝),轉換模式爲"%r [%t] %p %c %x - %m%n"
。最左邊的值(%r
)是自執行開始以來經過的毫秒數。我希望以mm:ss或mm:ss:milisecs打印此值 - 但我仍然希望它是經過的時間,而不是當前時間。如何獲得log4j的控制檯appender以hh:mm:milisec格式編寫elapsed-time值?
我該如何做到這一點?
我使用log4j(和一些包裝),轉換模式爲"%r [%t] %p %c %x - %m%n"
。最左邊的值(%r
)是自執行開始以來經過的毫秒數。我希望以mm:ss或mm:ss:milisecs打印此值 - 但我仍然希望它是經過的時間,而不是當前時間。如何獲得log4j的控制檯appender以hh:mm:milisec格式編寫elapsed-time值?
我該如何做到這一點?
你應該寫你自己的佈局。最簡單的方法是擴展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>
您可以參考here所有可以使用的模式。
但是,不會只給我當前時間而不是時間流逝嗎? – einpoklum
我不再在這個問題相關的公司,但我會假設這是有效的。 – einpoklum