0

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

我怎样才能做到这一点?

4

2 回答 2

1

您应该编写自己的布局。最简单的只是扩展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 回答