我使用带有转换模式的 log4j(和一些包装器)"%r [%t] %p %c %x - %m%n"
。最左边的值 ( %r
) 是自执行开始以来经过的毫秒数。我希望这个值以 mm:ss 或 mm:ss:milisecs 打印 - 但我仍然希望它是经过的时间,而不是当前时间。
我怎样才能做到这一点?
您应该编写自己的布局。最简单的只是扩展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>
您可以在此处参考您可以使用的所有模式。