2013-10-09 36 views
9

我爲了營造GC日誌並啓用滾動使用此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,因此丟失。

我想知道我是否正確,是否有解決方案。

在此先感謝!

回答

7

您也可以使用Java自身的時間戳爲:

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

%t將與Java中的時間戳來代替(見https://bugs.openjdk.java.net/browse/JDK-6950794-Xloggc

+0

我最喜歡的解決問題的方法支持信息和其他格式,因爲它也可以在屬性文件(比如wrapper.conf)中運行。謝謝! – dokaspar

+0

當我測試這個時,模式'gc_%t.log'的文件看起來像:'gc_2016-12-06_16-46-30 .log.0.current「與您鏈接的文檔相矛盾:'%t - 日誌文件爲cre時的日期戳(格式:YYYY-MM-DD)' – joseph

5

這裏同樣的問題,我通過添加時間戳這樣的GC日誌文件名(在本例中的/ etc /默認/ tomcat7)固定它:

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

這樣你把你的GC日誌後因爲jvm以不同的時間戳開始並且不覆蓋之前寫入的gc.logs,所以重新啓動。您需要不時手動清理這些文件(cronjob)。

相關問題