tomcat-GC日志打印策略
默认的tomcat GC日志文件名称配置是:-Xloggc:/tomcat/18080/gc.log ,生成的第一个日志文件名称为gc.log.1,当一个日志文件的大小达到-XX:GCLogFileSize参数设置的数值时,会生成一个新文件,名称为gc.log.2,GC日志内容也会写入到这个新文件中,依次类推往后生成的日志文件为gc.log.3、gc.log.4、gc.log.5。这样生成的日志文件个数达到-XX:NumberOfGCLogFiles设置的数值时,又会重新生成gc.log.1文件,这样新生成的gc日志就会写入到gc.log.1中,而老的日志会保存在gc.log.5中,之前的日志文件内容被覆盖,不利于进行日志分析。
JDK8以上版本的java环境,可以通过配置以下参数,给GC日志的文件后缀加上时间戳。当新的GC日志文件生成时,GC日志文件名称会带有时间戳,这样就不会出现将新产生的日志写入到老的日志文件中,老的日志文件内容也不会被覆盖。我们只需要通过GC日志名称中标注的最新的时间戳信息来判定哪个是最新的GC日志文件:
-XX:+PrintGCDetails 在日志中输出GC详细信息
-XX:+PrintGCDateStamps 显示GC状态的时间
-Xloggc:/tomcat/18080/logs/gc-%t.log
GC日志文件格式路径和名称,%t表示GC日志文件名称中显示当前日期
-XX:+UseGCLogFileRotation 开启滚动日志
-XX:NumberOfGCLogFiles=5
设置保留的GC日志的个数,但需要注意,tomcat重启后生成的GC日志文件不会列入计数
-XX:GCLogFileSize=10M 设置GC日志文件多大时,写入下一个GC日志文件中
配置示例
我们在/tomcat/18080/bin/setenv.sh中配置如下参数:
GC_OPTS="-Xloggc:/tomcat/18080/logs/gc-%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=5M"
重启tomcat,观察GC日志,发现gc日志文件的名称格式已经带有时间戳了: