Logging 如何获取log4j';s console appender是否以hh:mm:毫秒格式写入运行时间值?

Logging 如何获取log4j';s console appender是否以hh:mm:毫秒格式写入运行时间值?,logging,log4j,format,timestamp,Logging,Log4j,Format,Timestamp,我使用log4j(和一些包装器)和转换模式%r[%t]%p%c%x-%m%n“。最左边的值(%r)是执行开始后经过的毫秒数。我希望这个值以mm:ss或mm:ss:milisecs打印,但我仍然希望它是经过的时间,而不是当前时间 如何实现此目的?您可以尝试以下方式设置布局模式: <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j

我使用log4j(和一些包装器)和转换模式
%r[%t]%p%c%x-%m%n“
。最左边的值(
%r
)是执行开始后经过的毫秒数。我希望这个值以mm:ss或mm:ss:milisecs打印,但我仍然希望它是经过的时间,而不是当前时间


如何实现此目的?

您可以尝试以下方式设置布局模式:

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

用于所有可以使用的模式。

您应该编写自己的布局。最简单的方法就是扩展org.apache.log4j.PatternLayout
并覆盖format方法

com.stackoverflow.MyPattern

然后像往常一样进行配置:

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

您可以随意扩展布局。下面是一个完整的工作示例,它使用joda:

添加经过的时间,但不会只给我当前时间而不是经过的时间?我不再在与此问题相关的公司工作,但我假设这是可行的。
log4j.appender.A1.layout=com.stackoverflow.MyPattern
log4j.appender.A1.layout=com.farmnet365.main.impl.jpa.extensions.TimeElapsedPatternLayout