Reputation: 163
I use this jvm option in order to create gc logs and enable rolling:
$ java -Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 XX:GCLogFileSize=128K
However, I have a problem when I restart my application. After a restart, the first log file gc.log.0
is overwritten and the data of that file is not rolled to gc.log.1
and hence lost.
I'm wondering if I'm right and if there's a solution for this.
Thanks in advance!
Upvotes: 15
Views: 8650
Reputation: 27496
You can also use java own timestamps for that:
java -Xloggc:gc-%t.log ...(rest of your line)...
%t
will be replaced with a timestamp by java (see https://bugs.openjdk.java.net/browse/JDK-6950794 for information and other formats supported by -Xloggc
Upvotes: 19
Reputation: 9222
Same problem here, I fixed it by adding the timestamp to the gc log file name like this (in this case /etc/default/tomcat7):
DATE=`date +%Y-%m-%d-%H-%M`
JAVA_OPTS="-Xloggc:/var/log/tomcat7/gc-$DATE.log ..."
this way you keep your gc logs after restart as jvm starts with a different timestamp and does not overwrite gc.logs written before. you need to clean up these files manually from time to time (cronjob).
Upvotes: 5