更改 Tomcat 日志记录未按预期工作



>我在MSWindows的Tomcat下运行了一个行为异常的应用程序。为了设置系统以更好地了解失败的原因,我正在尝试添加 GC 日志记录 - 但到目前为止我的尝试失败了。

最初我在setenv中设置了CATALINA_OPTS.bat - 但在重新启动服务时忽略了这些。

然后我尝试使用 Tomcat8w 添加选项.exe :

-Xloggc:"C:PerfLogsgc-tomcat.log"
-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=5M 
-XX:+PrintGCDetails
-verbose:gc
-XX:+PrintGCDateStamps 
-XX:+HeapDumpOnCtrlBreak

服务无法启动,并出现"错误 4"。事件查看器显示:

Apache Tomcat 8.0 Tomcat8 服务因以下特定于服务的错误而终止: 系统无法打开该文件。

我已经检查了路径,系统用户具有完全控制权。Tomcat stderr 日志中没有错误报告 - 只有一个条目:

Commons Daemon procrun stdout initialized

我没有看到任何内容被添加到其他日志文件中。

删除上述选项允许启动服务。在路径上使用带有双引号的上述配置没有任何影响。在启动服务之前创建初始日志文件没有任何影响。

如何启用 GC 日志记录?我怎样才能找出当前失败的原因?

(可悲的是,迁移到更用户友好的操作系统不是一种选择(。

更新我发现了更多的日志条目 - 这次是在通用守护程序-YYYY-MM-DD.log:

[2018-08-29 11:04:52] [info]  [ 4068] Running 'Tomcat8' Service...
[2018-08-29 11:04:52] [info]  [ 2560] Starting service...
[2018-08-29 11:04:52] [error] [ 4200] CreateJavaVM Failed
[2018-08-29 11:04:52] [error] [ 4200] The system could not find the environment option that was entered.
[2018-08-29 11:04:52] [error] [ 2560] Failed to start Java
[2018-08-29 11:04:52] [error] [ 2560] ServiceStart returned 4
[2018-08-29 11:04:52] [info]  [ 4068] Run service finished.
[2018-08-29 11:04:52] [info]  [ 4068] Commons Daemon procrun finished

并且,如果相关

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

经过大量的挖掘,我发现MSWindows jvm显然是Java世界中的二流公民。根据Oracle文档,MSWindows Java引擎不支持日志轮换。从配置中删除以下选项允许 JVM 从 GC 日志记录开始:

-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=5M 

为什么这报告为"系统无法打开文件",我不知道。

现在我只需要弄清楚当日志文件填满时会发生什么/我如何防止这种情况。

最新更新