2014-12-18 9 views
5
-Xss256k 
-Djava.net.preferIPv4Stack=true 
-Dfile.encoding=UTF-8 
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:CMSInitiatingOccupancyFraction=75 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:+DisableExplicitGC 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps 
-XX:+PrintClassHistogram 
-XX:+PrintClassHistogramBeforeFullGC 
-XX:+PrintTenuringDistribution 
-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintPromotionFailure 
-XX:PrintFLSStatistics=1 
-verbose:gc 
-XX:GCLogFileSize=64m 
-XX:NumberOfGCLogFiles=2 
-XX:+UseGCLogFileRotation 
-Xloggc:./logs/gc.log 

Die obigen sind die vollständige Liste der JAVA_OPTS, die ich für meine Anwendung überlasse. Das Problem besteht darin, dass die Datei gc.log manchmal nicht erstellt wird, wenn das Protokollverzeichnis zum Zeitpunkt des Starts der Anwendung nicht vorhanden ist. Aber gc.log wird immer erstellt, wenn ich sicherstelle, dass das Protokollverzeichnis zu dem Zeitpunkt existiert, zu dem die Anwendung gestartet wird.Xloggc erstellt keine Protokolldatei, wenn der Pfad zum ersten Mal nicht existiert

Also habe ich recht, wenn ich davon ausgehe, dass Xloggc vor dem Erstellen des logs-Verzeichnisses, wenn ein GC auftritt, sicher abstürzt? Gibt es eine andere Problemumgehung als das manuelle Vorerstellen des Protokollverzeichnisses?

Antwort

2

Ja für -Xloggc, um eine Protokolldatei zu erstellen, sollte das Verzeichnis immer vorhanden sein. Das manuelle Erstellen eines Verzeichnisses ist am einfachsten. In den meisten Projekten ist das Verzeichnis logs immer verfügbar. Aber wenn Sie jemals die Protokolle löschen müssen, schlage ich vor, dass Sie alle Dateien im Verzeichnis logs löschen, aber das Verzeichnis intakt lassen. anstelle von Standard-Startskripts für alle Server neu gestartet

Sie können sogar ein Shell-Skript schreiben die Protokolle Verzeichnis zu erstellen und dann den Server starten, aber Sie haben dieses Skript zu verwenden,

Verwandte Themen