Игнорировать журналы, созданные дочерними потоками - PullRequest
0 голосов
/ 31 марта 2012

Приложение, которое я сейчас разрабатываю, запускает некоторый независимый библиотечный код, который выводит множество логов на стандартный вывод через PrintWriter. Кроме того, задачи, выполняемые библиотекой, выполняются в отдельных потоках. Я хотел бы выяснить, можно ли игнорировать (не показывать журналы на консоли) эти журналы. Однако я не могу напрямую изменить код библиотеки, поэтому о простом решении не может быть и речи.

Ура!

1 Ответ

1 голос
/ 31 марта 2012

Что это за библиотека?Или, если быть точным: это использует какую-то структуру логирования?Если он просто печатает данные на консоль, используя System.out, то это, по сути, Poorly Written Library (tm) .В этом случае все, что вы можете сделать, это перенаправить System.out на , используя System Out и Err, перенаправленный на SLF4J .В основном она переопределяет консоль по умолчанию, используя System.setErr() и System.setOut().

Если ваша библиотека использует любой каркас журналирования (возможно, java.util.logging) попытайтесь выяснить, какие регистраторы / категории он использует, и отфильтровать их в вашей структуре ведения журналов.

Обратите внимание, что я ничего не упоминаю о потоках.Фильтрация журналов / вывод консоли на основе текущего потока немного сложна, вместо этого используйте иерархию регистраторов в выбранной вами структуре журналирования.

...