Java 如何将GC重定向到log4j2?

Java 如何将GC重定向到log4j2?,java,log4j2,Java,Log4j2,我已经设置了log4j2,正在使用org.apache.logging.log4j.io.IoBuilder将stdout和stderr重定向到我的日志,如下所示: System.setOut(IoBuilder.forLogger(LogManager.getLogger("out")).setLevel(Level.INFO).buildPrintStream()); System.setErr(IoBuilder.forLogger(LogManager.getLogger("err"))

我已经设置了log4j2,正在使用org.apache.logging.log4j.io.IoBuilder将stdout和stderr重定向到我的日志,如下所示:

System.setOut(IoBuilder.forLogger(LogManager.getLogger("out")).setLevel(Level.INFO).buildPrintStream());
System.setErr(IoBuilder.forLogger(LogManager.getLogger("err")).setLevel(Level.ERROR).buildPrintStream());
如果代码中有类似System.out.println的内容(“这是一个测试”);我得到了以下的预期输出:

15:15:43.817 [main] INFO  out - this is a test
给定我的日志配置

但是,如果我将GC添加到程序中:-XX:+PrintGCDetails,我会期望类似的内容,但我得到了如下结果:

[GC (Allocation Failure) [PSYoungGen: 49152K->6129K(57344K)] 49152K->6137K(188416K), 0.1090832 secs] [Times: user=0.16 sys=0.00, real=0.11 secs]

我的问题是为什么GC没有通过我的记录器进行管道传输?当然,它必须发送到stdout或stderr?

GC由程序下面的VM执行


VM使用自己的日志记录,它完全独立于Java日志记录。

GC从JVM执行