log4j ConversionPattern时间戳以微秒为单位

ale*_*oot 7 java logging log4j

我想在log4j生成的日志文件的每个条目的时间戳中添加微秒,是否可能?

我在官方文档中搜索过但没有提到毫秒以下的单位.

现在我有一个如下所示的转换模式:

%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n
Run Code Online (Sandbox Code Playgroud)

在日期转换模式(%d)中我想在毫秒值(SSS)之后添加微秒,有没有办法做到这一点?

Pet*_*rey 6

如果要显示微秒,则需要自己添加.这可以使用自定义Formatter(而不是PatternFormatter)来完成


Nic*_*tto 5

Java 9log4j 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