繁体   English   中英

应用程序重启时GC日志轮换数据丢失

[英]GC log rotation data lose on application restart

我使用这个jvm选项来创建gc日志并启用滚动:

$ java -Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5  XX:GCLogFileSize=128K

但是,当我重新启动应用程序时,我遇到了问题。 重新启动后,第一个日志文件gc.log.0被覆盖,该文件的数据不会转到gc.log.1 ,因此会丢失。

我想知道我是否正确,是否有解决方案。

提前致谢!

你也可以使用java自己的时间戳:

java -Xloggc:gc-%t.log ...(rest of your line)...

%t将被java的时间戳替换(有关-Xloggc支持的信息和其他格式,请参阅https://bugs.openjdk.java.net/browse/JDK-6950794)

同样的问题,我通过在gc日志文件名中添加时间戳来修复它(在本例中为/ etc / default / tomcat7):

DATE=`date +%Y-%m-%d-%H-%M`
JAVA_OPTS="-Xloggc:/var/log/tomcat7/gc-$DATE.log ..."

这样你就可以在重新启动后保留你的gc日志,因为jvm以不同的时间戳开始,并且不会覆盖之前写的gc.logs。 你需要不时手动清理这些文件(cronjob)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM