6
-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。

那么我是否正确假设如果发生 GC,在我的 log4j 框架创建日志目录之前,Xloggc 将安全失败?除了手动预先创建日志目录之外,还有其他解决方法吗?

4

1 回答 1

7

是的,-Xloggc要创建一个日志文件,该目录应该始终存在。手动创建目录是最简单的事情。在大多数项目中,logs 目录总是可用的。但是,如果您需要清除日志,我建议您删除目录中的所有文件,logs但保持目录不变。

您甚至可以编写一个 shell 脚本来创建日志目录,然后启动您的服务器,但是您必须使用此脚本而不是标准启动脚本来重新启动所有服务器

于 2015-02-07T07:26:42.553 回答