11

有没有办法将垃圾收集信息(例如-XX:+PrintGCDetailsor的输出-verbose:gc)转发到 Java 应用程序中的记录器(在我的情况下为 sl4j + logback)?

4

2 回答 2

6

这些消息是由 JVM 本机进程而不是 Java 代码生成的,所以你可以

  1. -Xloggc使用(无旋转) 将输出重定向到文件
  2. 直接管道标准输出(几个旋转选项)
于 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 回答