如果路径第一次不存在,则Xloggc不会创建日志文件

Ram*_*Ram 5 jvm-arguments java-opts

-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
Run Code Online (Sandbox Code Playgroud)

以上是我正在为我的申请传递的JAVA_OPTS的完整列表.问题是如果在应用程序启动时日志目录不存在,有时不会创建gc.log文件.但是,如果我确保应用程序启动时日志目录存在,则始终会创建gc.log.

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

Ark*_*tos 6

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

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