有没有办法将垃圾收集信息(例如-XX:+PrintGCDetails
or的输出-verbose:gc
)转发到 Java 应用程序中的记录器(在我的情况下为 sl4j + logback)?
问问题
3122 次
2 回答
6
这些消息是由 JVM 本机进程而不是 Java 代码生成的,所以你可以
-Xloggc
使用(无旋转) 将输出重定向到文件- 直接管道标准输出(几个旋转选项)
于 2012-04-20T14:52:25.947 回答
3
一个有趣的方法是将 gc.log 重定向到命名管道
-Xloggc:/my/named/pipe
如何将 GC 日志写入命名管道
然后从应用程序本身读取该管道: 如何从 Java 打开 Windows 命名管道?
并从代码中记录到任意(例如异步滚动)logback 记录器。
在 Windows 机器上试过了。不幸的是,在 Windows 上设置比在 Linux 上更棘手。
在 Windows 上,它基本上是在一个额外的Powershell 脚本的帮助下工作的(也可以是一个专用的应用程序)。该示例项目还包含一个演示应用程序,可立即用于测试通过 SLF4J 将 GC 日志重定向到 Logback。
于 2016-02-26T14:29:23.040 回答