【发布时间】:2011-04-18 20:05:03
【问题描述】:
是否可以在 Sun JVM 中滚动垃圾收集器日志?
目前我使用以下方法生成日志:
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log
但我必须使用 fifo 队列和 rotatelogs 手动轮换它们,以便每天创建一个新日志。我希望有更好的解决方案。
也许有一种方法可以从 java 内部访问此日志条目,以便我可以将它们重定向到 log4j?
编辑:使用 fifo 队列的解决方案还不够好,因为如果从此队列中读取的进程(例如 rotatelogs)读取速度变慢,它将减慢整个 jvm(显然 Sun/Oracle 会同步 gc 日志记录)
【问题讨论】:
-
您的解决方案对我来说听起来不错;你不喜欢它什么?您有托管:轮换发生在您的 Java 调用(配置日志记录)附近,而不是在应用程序代码中(应该忽略日志记录)。
-
我的直觉也会说不,这是不可能的,或者如果可能的话,它会通过一个私有的、受限制的 API,你可能不想强行进入你的应用程序。
-
-XX:+PrintGCDateStamps 不适用于 java5?
标签: java logging garbage-collection