为 log4j 添加微秒级

Che*_*agi 2 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 Logged !!!
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它总是给出 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> 
Run Code Online (Sandbox Code Playgroud)

Sad*_*irD 5

这取决于您使用的是什么 log4j。仅当您使用 JDK9 和新版本的 log4j (2.x) 时才支持此功能。

您正在搜索的格式是这样的: %d{HH:mm:ss,nnnnnn}

另请注意官方文档的内容,因为有很多“陷阱和陷阱”。IE:

Log4j 2.11 添加了对在 Java 9 上运行时比毫秒更精确的时间戳的有限支持。请注意,并非所有 DateTimeFormatter 格式都受支持。只有上表中提到的格式的时间戳可以使用“纳秒”模式字母 n 而不是“秒分数”模式字母 S。当运行在Java 9 通过将系统属性 log4j2.Clock 设置为 SystemMillisClock

有关以下链接的更多信息:Log4j 2.x 布局