Как перенаправить GC в log4j2? - PullRequest
0 голосов
/ 30 августа 2018

Я настроил 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 не попадает в мою систему регистрации? Конечно, его нужно отправить на стандартный вывод или стандартный вывод?

1 Ответ

0 голосов
/ 30 августа 2018

GC выполняется виртуальной машиной, которая находится ниже вашей программы.

ВМ использует свое собственное ведение журнала, полностью независимое от ведения журнала Java.

...