[JUL] несколько обработчиков на одном логгере
От: f95.2  
Дата: 12.05.20 22:13
Оценка:
Добрый вечер.
Я пытаюсь повесить несколько обработчиков на логгер, чтобы каждый из них логировал нужные сообщения:

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".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.