You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JBoss/WildFly日志Pattern Formatter中自定义微秒级时间戳

解决WildFly日志微秒级时间戳配置问题

问题根源

WildFly默认使用java.util.Date处理日志时间戳,该类仅支持毫秒级精度。即使在日志格式中指定SSSSSS,后面的微秒位也只是基于毫秒值补零生成的假数据,并非真实的微秒时间。

有效配置方案(同时支持JBoss日志管理器和Undertow)

1. 配置JBoss日志管理器的Pattern Formatter

需要启用use-java-time属性,让日志管理器使用java.time系列API(原生支持微秒/纳秒精度),同时指定包含微秒的日期格式:

执行以下CLI命令:

# 启用java.time高精度时间支持
/subsystem=logging/pattern-formatter=COLOR-PATTERN:write-attribute(name=use-java-time, value=true)
# 设置包含微秒的日志输出格式
/subsystem=logging/pattern-formatter=COLOR-PATTERN:write-attribute(name=pattern, value="%d{yyyy-MM-dd HH:mm:ss.SSSSSS} %-5p [%c] (%t) %s%e%n")

2. 配置Undertow访问日志的微秒时间戳

Undertow访问日志默认独立配置,需修改其规则以支持高精度时间:

方式一:直接修改访问日志格式

执行以下CLI命令(以默认access-log为例):

# 为Undertow访问日志启用java.time支持
/subsystem=undertow/server=default-server/host=default-host/access-log=default:write-attribute(name=use-java-time, value=true)
# 设置包含微秒的访问日志格式
/subsystem=undertow/server=default-server/host=default-host/access-log=default:write-attribute(name=pattern, value="%d{yyyy-MM-dd HH:mm:ss.SSSSSS} %h %l %u \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"")

方式二:复用日志管理器的Formatter

如果希望Undertow访问日志复用已配置好的COLOR-PATTERN格式,可执行:

/subsystem=undertow/server=default-server/host=default-host/access-log=default:write-attribute(name=formatter, value=COLOR-PATTERN)

验证结果

配置完成后重启WildFly,日志将输出真实的微秒级时间戳,示例如下:

2025-09-09 11:24:10.123456 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) WFLYUT0012: Started server default-server.
2025-09-09 11:25:11.789012 INFO  [io.undertow.accesslog] (default I/O-22) - - 127.0.0.1 "GET / HTTP/2.0" 200 19 "http://example.com" "kube-probe/1.21"

注意事项

  • 该方案要求WildFly版本≥26,因为从这个版本开始,JBoss Log Manager正式支持use-java-time属性。
  • 确保操作系统和JVM支持高精度时钟(现代系统默认已支持)。

内容的提问来源于stack exchange,提问作者Deepak Rawte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:13:11