Я хочу, чтобы Java ConsoleHandler
использовала System.out
вместо err
, поэтому я реализовал свой собственный обработчик, который вызывает protected void setOutputStream(OutputStream)
родительского класса StreamHandler
:
public class ConsoleHandler extends java.util.logging.ConsoleHandler {
public ConsoleHandler() {
setOutputStream(System.out); // or System.err
setLevel(Level.ALL);
}
}
Я удаляю консольный регистратор по умолчанию и добавляю свой собственный в корневой регистратор:
Logger l = Logger.getLogger("");
for (Handler h : l.getHandlers())
l.removeHandler(h);
l.addHandler(new ConsoleHandler());
System.out.println("OUT");
System.err.println("ERR");
Проблема: "OUT" всегда печатается, а "ERR" никогда, независимо от потока вывода, который я установил в своем конструкторе ConsoleHandler.