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格式。