log4j ConversionPattern时间戳以微秒为单位
我想在log4j生成的日志文件的每个条目的时间戳中添加微秒,是否可能?
我在官方文档中搜索过但没有提到毫秒以下的单位。
现在我有一个如下所示的转换模式:
%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n
在日期转换模式( %d )中我想在毫秒值( SSS )之后添加微秒 ,有没有办法做到这一点?
如果要显示微秒,则需要自己添加。 这可以使用自定义Formatter(而不是PatternFormatter)来完成
从Java 9
和log4j 2.11.0
,即使有纳秒也可以获得时间戳。
以下是特殊的预定义模式,允许获取日期时间或微秒或纳秒的时间:
- 模式:
%d{ABSOLUTE_MICROS}
输出示例:14:34:02,123456
- 模式:
%d{ABSOLUTE_NANOS}
输出示例:14:34:02,123456789
- 模式:
%d{DEFAULT_MICROS}
输出示例:2012-11-02 14:34:02,123456
- 模式:
%d{DEFAULT_NANOS}
输出示例:2012-11-02 14:34:02,123456789
如果您需要更具体的模式,请使用“ 纳秒 ”模式字母n
而不是“ 小数秒 ”模式字母S
,例如%d{dd MMM yyyy HH:mm:ss,nnnn} to %d{dd MMM yyyy HH:mm:ss,nnnnnnnnn}
将于02 Nov 2012 14:34:02,1234 to 02 Nov 2012 14:34:02,123456789
。
在你的情况下,你需要几毫秒和几微秒,你的模式可能类似于%d{dd/MM/yyyy HH:mm:ss,nnnnnn}
在Java 9上运行时,Log4j 2.11增加了对时间戳的有限支持,而不是毫秒。
有关详细信息,请参阅https://logging.apache.org/log4j/2.x/manual/layouts.html
它基于SimpleDateFormat并且不支持亚毫秒格式,因此无法报告微秒。