Добрый вечер.
Я пытаюсь повесить несколько обработчиков на логгер, чтобы каждый из них логировал нужные сообщения:
class Main {
public static void main(String[] args) {
var logger = Logger.getLogger("logger");
logger.setUseParentHandlers(false);
logger.setLevel(Level.ALL);
class StdoutHandler extends ConsoleHandler {
public StdoutHandler() {
setOutputStream(System.out);
}
}
ConsoleHandler stderrHandler = new ConsoleHandler();
stderrHandler.setLevel(Level.WARNING);
logger.addHandler(stderrHandler);
ConsoleHandler stdoutHandler = new StdoutHandler();
stdoutHandler.setLevel(Level.ALL);
logger.addHandler(stdoutHandler);
logger.finer("finer");
logger.warning("warning");
}
}
Я ожидаю, что "finer" залогируется один раз в stdout, а "warning" — по одному разу в stdout и stderr.
А по факту каждое сообщение логируется один раз в stdout.
ЧЯДНТ?
P.S.
Если в конец программы добавить
System.err.println("err");
то в stderr все равно ничего не будет, даже строки "err".