-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
以上是我正在为我的申请传递的JAVA_OPTS的完整列表。问题是,如果在应用程序启动时日志目录不存在,则有时不会创建gc.log文件。 但是,如果我确保应用程序启动时日志目录存在,则始终会创建gc.log。
所以我正确地假设在我的log4j框架创建日志目录之前,如果发生GC,Xloggc将安全地失败?除了手动预创建日志目录之外,还有其他解决方法吗?
答案 0 :(得分:2)
是-Xloggc
创建日志文件,目录应始终存在。
手动创建目录是最简单的方法。在大多数项目中,日志目录始终可用。但是如果您需要清除日志,我建议您删除logs
目录中的所有文件,但保留目录。
您甚至可以编写shell脚本来创建logs目录然后启动服务器,但是您必须使用此脚本而不是标准启动脚本来重新启动服务器