alid
alid

Reputation: 163

GC log rotation data lose on application restart

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

Answers (2)

Krzysztof Krasoń
Krzysztof Krasoń

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

Janning Vygen
Janning Vygen

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

Related Questions