log4j:以毫秒为单位的当前时间

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

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

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

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

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

实现你想要的一种可能的方法是扩展Log4j的行为,这是相当复杂的,但如果它是绝对必要的……在这里你去:

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

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

你可以尝试这个。

 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

尝试这个,

  %d{dd MMM yyyy HH:mm:ss,SSS} 

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

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