如果我们将文件移动到写入日志的位置,如何滚动 GC 日志
How to roll over GC logs if we move the file where the logs were being written
我已将 jvm gc 日志配置为写入文件:
"-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${LOG_DIR}/myGCLogs.gc"
应用程序启动时,如果启动过程中出现异常,我需要将日志抓取到备份文件夹中,刷新GC日志。我所做的是将文件从 LOG_DIR 移动 (mv) 到 LOG_BACKUP_DIR,然后创建一个新的 myGCLogs.gc 文件。在此之后,我再也看不到日志被写入文件。我必须重新启动我的服务,然后我看到日志再次写入它。
这种情况有什么解决办法吗?我能否以某种方式翻转 GC 日志,以便它再次开始写入新文件而无需重新启动服务?这不是确切的场景,但我尽可能多地举例说明。如果需要,我可以提供更多详细信息。
编辑:
我可以尝试解决这部分问题,如果我必须回滚,我不会移动日志文件。但对于第二部分,当一切都成功时,我需要将所有日志移动到我们附加到 VM 的新卷以保留日志。由于现在这是一个不同的文件系统,移动应用程序在原始文件系统上启动时打开的实际文件将停止写入 GC 日志,直到我重新启动。一旦我们都设置好了,我正在寻找某种类型的日志轮换,这样新的 GC 日志现在将写入新的文件系统,而无需重新启动。我尝试添加:
-XX:+UseGCLogFileRotation
到我的配置,然后试了:
jcmd <PID> GC.rotate_log
但这对我不起作用。我收到此错误:
Target VM does not support GC log file rotation.
PS。我在 EC2 实例上 运行 这个。
找到我的答案。我必须配置所有这 3 个标志:
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles
-XX:GCLogFileSize
然后,运行 命令:
jcmd <PID> GC.rotate_log
它实际上翻过了原木。
我已将 jvm gc 日志配置为写入文件:
"-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${LOG_DIR}/myGCLogs.gc"
应用程序启动时,如果启动过程中出现异常,我需要将日志抓取到备份文件夹中,刷新GC日志。我所做的是将文件从 LOG_DIR 移动 (mv) 到 LOG_BACKUP_DIR,然后创建一个新的 myGCLogs.gc 文件。在此之后,我再也看不到日志被写入文件。我必须重新启动我的服务,然后我看到日志再次写入它。
这种情况有什么解决办法吗?我能否以某种方式翻转 GC 日志,以便它再次开始写入新文件而无需重新启动服务?这不是确切的场景,但我尽可能多地举例说明。如果需要,我可以提供更多详细信息。
编辑: 我可以尝试解决这部分问题,如果我必须回滚,我不会移动日志文件。但对于第二部分,当一切都成功时,我需要将所有日志移动到我们附加到 VM 的新卷以保留日志。由于现在这是一个不同的文件系统,移动应用程序在原始文件系统上启动时打开的实际文件将停止写入 GC 日志,直到我重新启动。一旦我们都设置好了,我正在寻找某种类型的日志轮换,这样新的 GC 日志现在将写入新的文件系统,而无需重新启动。我尝试添加:
-XX:+UseGCLogFileRotation
到我的配置,然后试了:
jcmd <PID> GC.rotate_log
但这对我不起作用。我收到此错误:
Target VM does not support GC log file rotation.
PS。我在 EC2 实例上 运行 这个。
找到我的答案。我必须配置所有这 3 个标志:
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles
-XX:GCLogFileSize
然后,运行 命令:
jcmd <PID> GC.rotate_log
它实际上翻过了原木。