gpt4 book ai didi

java - 如何在 Windows 下的 Java 服务中添加时间戳 GC 日志文件名?

转载 作者:可可西里 更新时间:2023-11-01 13:28:33 26 4
gpt4 key购买 nike

我有一个在 Windows 下针对 Apache Tomcat 运行的 Java 应用程序。有两种运行此应用程序的方法 - 作为 Windows 服务,或从批处理文件手动调用 Tomcat。

当我通过批处理文件启动应用程序时,我使用以下内容将 GC 日志添加到 JVM 参数中:

-Xloggc=%~dp0..\logs\gc-%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.log

这会导致 GC 日志在文件名中输出日期 - 但当作为服务运行时,DATETIME 变量无法正确解析。

使用 Windows 服务时,我必须在我的 JVM 参数中使用哪些变量以确保日期和时间附加到 GC 日志?

我试图简化它 - gc-%DATE%.log, gc-${DATE}.log,在所有情况下变量都不会解析。

感谢任何帮助!

编辑:请注意,任何解决方案必须在应用程序作为 Windows 服务运行时起作用。单独使用很好,我们已经涵盖了。仅当使用 Windows 服务时。

最佳答案

使用 Java 8,您可以访问两个非常有用的新替代品。添加了 %t 和 %p,其中 %t 是时间戳,%p 是进程 ID。

-Xloggc:C:\logs\gc_%t_%p.log 将在 C:\logs 中产生一个类似这样的文件。

gc_2016-08-12_10-12-29_pid7320.log

此功能没有很好的文档记录。我在这里发现了它: OpenJDK Bug JDK-6950794

因为我也希望它能在 Windows 服务中工作,所以我通过以下方式将此功能的使用添加到 tomcat service.bat 脚本中。

--JvmOptions "...;-Xloggc:%CATALINA_BASE%\logs\gc-%%t.log;..."

注意 %%t。需要额外的 % 作为转义字符。

关于java - 如何在 Windows 下的 Java 服务中添加时间戳 GC 日志文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com