Я использую библиотеку Java, которая создает поток, и внутри потока есть неперехваченное исключение, которое отправляется на стандартный вывод.
try {
Socket socket = server.accept();
Thread t = new Thread(...);
t.start();
} catch (IOException e) {
// Do noting
}
Имеет ли это смысл, что это исключение заканчивается печатью на стандартный вывод?Потому что я получаю сообщения об ошибках на консоли при использовании библиотеки в тестах.
Я попытался перенаправить стандартный вывод примерно так:
PrintStream original = System.out;
System.setOut(new PrintStream(new OutputStream() {
public void write(int b) {
//DO NOTHING
}
}));
Это не сработало .. Я думаю, что этоимеет какое-то отношение к исключению, создаваемому потоком, который запускается внутри библиотеки.
Как отключить это при переходе на консоль?или перенаправить его куда-нибудь еще?
РЕДАКТИРОВАТЬ:
Так что, очевидно, исключения печатаются, потому что они идут в System.err, я сделал что-то подобное в классе junit
static {
System.setErr(new PrintStream(new OutputStream() {
public void write(int b) {
}
}));
}
И это остановило исключения из печати на консоль.
Я хочу отключить только System.err из конкретный пакет .
Возможно ли это как-нибудь?может быть, используя log4j2.xml?