如何为Java的GC日志指定时区?

4
我已经配置了JVM将垃圾回收统计信息写入日志文件,使用以下选项:
-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:gc.log-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles = 1-XX:GCLogFileSize = 64M
问题是,我的应用程序服务器日志使用UTC作为日志消息的时间戳,但GC日志使用服务器时区,该时区当前比UTC晚4个小时。这使得在我的服务器日志和GC暂停之间进行事件调和变得更加困难。
有没有办法配置Java GC日志使用哪个时区?
我使用的是Java 7。

你能将JVM的默认时区设置为UTC-4吗?(不知道这是否是GC日志使用的时区!) - Andy Turner
JVM的默认时区已经是UTC-4,这也是GC日志使用的时区。我的问题是,我已经配置了服务器日志以使用UTC时间戳来记录日志消息,所以它们与GC日志中的时间戳不匹配。当然,我可以将服务器日志的时区更改为UTC-4,但我想知道是否有可能更改GC日志的时区。 - Steve K
哦,好的,我明白了。那么,将一个日志或其他内容通过某个提取和移动时间戳的工具进行管道传输怎么样?(不是很优雅……) - Andy Turner
是的,这是一个解决方法(如果这个问题的答案是“不行,不可能的”),但如果我要这样做,我可能会暂时更改我们服务器日志使用的时区以匹配GC日志的时区。至少那只需要一行配置。 - Steve K
1个回答

1

如果您使用的是Linux系统,您可以将TZ变量设置为UTC。例如:

TZ=UTC java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=64M SomeClass

或者全局地(或在启动您的应用程序的脚本中):

export TZ=UTC

这将修改Java GC日志的时间戳。


我不知道为什么有人给它点了踩。这正是我在寻找的。 - Aleksander Stelmaczonek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接