18

log4j.properties我可以设置PatternLayout例如("[%p] %c - %m - %d %n")

是否有任何符号 (%something) 以毫秒为单位返回当前时间?

4

4 回答 4

26

你可以试试这个。

log4j.appender.appender_name.layout=org.apache.log4j.PatternLayout
log4j.appender.appender_name.layout.ConversionPattern=%d %p [%c] - %m%n

日期参数%d。例如:%d{HH:mm:ss,SSS}

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

于 2012-08-01T10:38:40.607 回答
20

没有完全符合您要求的 Log4J 符号。

%d返回具有给定模式的当前日期,由 a SimpleDateFormat(您放在括号之间的模式)定义,但不给您以毫秒为单位的时间。

%r给出自执行开始以来的毫秒数。

实现您想要的一种可能的方法是扩展 Log4j 的行为,它要复杂得多,但如果它是绝对必要的......你去:

自定义 log4j(编辑:不再在线?)
自定义 log4j(编辑:2018 替代方案)

编辑:请记住,根据您的评论,如果您需要计算不同机器中执行之间的时间差异,您必须确保机器的时钟是同步的,否则会导致您得出错误的结论。

于 2012-08-01T10:43:22.643 回答
12

试试这个,

   %d{dd MMM yyyy HH:mm:ss,SSS}
于 2012-08-01T10:40:27.187 回答
4

您应该可以%d{UNIX_MILLIS}手册中使用:

%d{UNIX}以秒为单位输出 UNIX 时间。%d{UNIX_MILLIS}以毫秒为单位输出 UNIX 时间。UNIX 时间是当前时间与 UTC 1970 年 1 月 1 日午夜之间的差异,对于 UNIX,以秒为单位,对于 UNIX_MILLIS,以毫秒为单位。虽然时间单位是毫秒,但粒度取决于操作系统 (Windows)。这是输出事件时间的一种有效方式,因为只发生从 long 到 String 的转换,不涉及日期格式。

于 2017-04-18T12:44:31.013 回答