Java 将微秒级添加到log4j
指 如何添加微秒级日志记录,如何为此创建自定义模式格式化程序 我也尝试过log4j2,但最终失败了Java 将微秒级添加到log4j,java,log4j,log4j2,Java,Log4j,Log4j2,指 如何添加微秒级日志记录,如何为此创建自定义模式格式化程序 我也尝试过log4j2,但最终失败了 12:42:05,972803200 [main] DEBUG Log4j2Test - Debug Message Logged !!! 12:42:05,975803200 [main] INFO Log4j2Test - Info Message Logged !!! 12:42:05,975803200 [main] ERROR Log4j2Test - Error Message Lo
12:42:05,972803200 [main] DEBUG Log4j2Test - Debug Message Logged !!!
12:42:05,975803200 [main] INFO Log4j2Test - Info Message Logged !!!
12:42:05,975803200 [main] ERROR Log4j2Test - Error Message Logged !!!
如你所见,它总是给出803200微秒和纳秒
我的log4j2.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{ABSOLUTE_NANOS} [%t] %-5level %logger{36} - %msg%n"/>
<!-- <PatternLayout
pattern="[%-5level] %d{ABSOLUTE_NANOS} [%t] %c{1} - %msg%n" /> -->
</Console>
</Appenders>
<Loggers>
<Root level="debug" additivity="false">
<AppenderRef ref="console" />
</Root>
</Loggers>
这取决于您使用的是什么log4j。仅当您使用JDK9和新(er)版本的log4j(2.x)时,才支持此功能 您正在搜索的格式是: %d{HH:mm:ss,nnnnnn} 还请注意官方文件所说的,因为有很多“捕获和捕获”。即: log4j2.11增加了对时间戳的有限支持,在Java9上运行时,时间戳比毫秒更精确。请注意,并非所有DateTimeFormatter格式都受支持。只有上表中提到的格式的时间戳可以使用“nano of second”模式字母n,而不是“分数of second”模式字母S。 当在Java 9上运行时,用户可以通过将系统属性log4j2.clock设置为SystemMillisLock恢复到毫秒精度时钟
有关以下链接的更多信息:这取决于您使用的是什么log4j。仅当您使用JDK9和新(er)版本的log4j(2.x)时,才支持此功能 您正在搜索的格式是: %d{HH:mm:ss,nnnnnn} 还请注意官方文件所说的,因为有很多“捕获和捕获”。即: log4j2.11增加了对时间戳的有限支持,在Java9上运行时,时间戳比毫秒更精确。请注意,并非所有DateTimeFormatter格式都受支持。只有上表中提到的格式的时间戳可以使用“nano of second”模式字母n,而不是“分数of second”模式字母S。 当在Java 9上运行时,用户可以通过将系统属性log4j2.clock设置为SystemMillisLock恢复到毫秒精度时钟
有关以下链接的更多信息:请看这里:是的,我在第一行中引用了相同的链接。在那里@Peter Lawrey建议创建自己的自定义格式化程序,我想知道如何创建一个用于微秒日志记录的格式化程序。Peter Lawrey在2011年,在Java 9和Log4j 2.11之前提出了这个建议。获得所需结果不需要自定义格式。您是否考虑过编写一个运行时间稍长的测试,以查看输出是否不是测试的工件?是的,我已经创建了自己的测试,给出了正确的时间,直到毫秒,之后才803200。我看到了相同的行为。我相信你发现了一只虫子。你能在Log4j2问题跟踪器中提出一个bug报告吗?看看这里:是的,我在第一行中提到了相同的链接。在那里@Peter Lawrey建议创建自己的自定义格式化程序,我想知道如何创建一个用于微秒日志记录的格式化程序。Peter Lawrey在2011年,在Java 9和Log4j 2.11之前提出了这个建议。获得所需结果不需要自定义格式。您是否考虑过编写一个运行时间稍长的测试,以查看输出是否不是测试的工件?是的,我已经创建了自己的测试,给出了正确的时间,直到毫秒,之后才803200。我看到了相同的行为。我相信你发现了一只虫子。你能在Log4j2问题跟踪器中提出一个bug报告吗?我使用的是JRE10,和你提到的格式相同,但给出了相同的微秒和纳秒值。它看起来像一个旧bug。快速检查Apache基金会给了我以下问题:因此我建议您更新Maven依赖项(如果您使用Maven)或手动下载并添加一个更新的库。我的快速搜索也无法确认对JDK10的任何引用,因此您可能希望重新考虑“降级”。另外,请确认您的项目使用的是JDK 10,因为有很多例子表明,人们忽略了IDE中的一些自动功能,这些功能会在不知不觉中“降级”JDK。在下载JRE9时,oracle网站
上说Java SE 9已经到了支持的末端。Java SE 9的用户应切换到Java SE 10。
。是的,我使用的是JRE10。你们提到的bug也是纳秒级的,即使微秒级也可以。你们能确认你们使用的是log4j/log4j 2版本吗?因为它说它影响了v2.5,这个问题类似于你的问题。另外,请注意这一部分:“解决方案是将NanoClock设置为配置的一个字段,并带有一个初始的虚拟nano clock值。PatternParser现在只在检测到nano time转换模式时修改其配置的nano clock。”我使用的是JRE10以及您提到的相同格式,但给出了相同的微秒和纳秒值。它看起来像一个旧的bug。快速检查Apache基金会给了我以下问题:因此我建议您更新Maven依赖项(如果您使用Maven)或手动下载并添加一个更新的库。我的快速搜索也无法确认对JDK10的任何引用,因此您可能希望重新考虑“降级”。另外,请确认您的项目使用的是JDK 10,因为有很多例子表明,人们忽略了IDE中的一些自动功能,这些功能会在不知不觉中“降级”JDK。在下载JRE9时,oracle网站上说Java SE 9已经到了支持的末端。Java SE 9的用户应切换到Java SE 10。
。是的,我使用的是JRE10。你们提到的bug也是纳秒级的,即使微秒级也可以。你们能确认你们使用的是log4j/log4j 2版本吗?因为它说它影响了v2.5,这个问题类似于你的问题。另外,请注意这一部分:“解决方案是使NanoClock成为配置的一个字段,并带有一个初始的虚拟nano clock值。PatternParser现在只在检测到nano time转换模式时修改其配置的nano clock。”