В приложении Java/Swing мы перенаправили System.out и System.err в отдельное представление (называемое «SystemOutView»), которое открывается при появлении нового вывода. Это отлично работает для выброшенных исключений и System.out.println()
. Это представление можно настроить с помощью файла свойств (т. е. активно ли оно вообще и открывается ли оно при выводе или нет).
В этом проекте мы используем log4j 1.2.15. Я обнаружил, что выходные данные log4j, даже если они отправляются в STDOUT, НЕ перенаправляются в SystemOutView, если какое-то ведение журнала уже имело место ДО того, как был создан экземпляр SystemOutView, и System.out и System.err были перенаправлены на него.
Другими словами:
- Перенаправить System.out и System.err в SystemOutView
- someLogger.debug("...")
... отлично работает: журнал появляется в SystemOutView.
НО:
- someLogger.debug("...")
- Перенаправить System.out и System.err в SystemOutView
- someLogger.debug("...")
... НЕ работает: 2-й оператор журнала переходит в STDOUT (как и 1-й) и НЕ перенаправляется в SystemOutView.
Поскольку SystemOutView можно настроить с помощью файла свойств, перед созданием экземпляра SystemOutView выполняется целая куча работы, поэтому очень вероятно, что выдаются некоторые операторы журнала. Что делает невозможным перенаправление вывода журнала в SystemOutView.
Что я могу с этим поделать?
Заранее большое спасибо
:-Денис