Итак, мы столкнулись с интересной проблемой сегодня. У нас есть веб-приложение Java EE, которое использует несколько сторонних jar-файлов. Это включает Hibernate.
Мы используем API регистрации Java, который поставляется вместе с SDK для целей регистрации. Обычно мы довольно слабы при ведении журнала, но столкнулись с этой проблемой с одним из наших сторонних jar-файлов, использующих log4j для создания собственного файла журнала. Он не только записывал операторы из своего собственного кода, он даже начал записывать отладки для кода гибернации, в результате чего пакетное задание заносило журналы на 3 ГБ за мгновение.
У меня есть 2 проблемы с этим:
- Мне нужно исправить эту проблему с журналированием (если возможно, я не хочу выдергивать или изменять конфигурацию log4j в стороннем фляге). Есть ли хороший способ сделать это, кроме изменения или извлечения конфигурации log4j в стороннем банке ИЛИ с помощью моей собственной конфигурации log4j, которая переопределяет конфигурацию в стороннем банке? Мне не нравится ни один из двух вариантов, но я хочу делать то, что лучше.
- Я хочу спросить, кошерно ли ожидать от сторонних библиотек веселого выхода из системы? Я думаю, что это плохой дизайн. Я хочу узнать мнение сообщества по этому поводу.
Я хочу, чтобы сторонние библиотеки регистрировали ОШИБКИ. Тем не менее, я думаю, что это немного неловко, что этот сторонний jar для регистрации DEBUG из пакетов, кроме тех, за которые он отвечает. например в моем случае этот сторонний jar регистрирует отладки Hibernate, хотя он даже не вызывает никаких методов hibernate. Пакетное задание, которое мы выполняли, даже не вызывало API в этом банке. Похоже, что моя собственная конфигурация log4j переопределяет то, что там, кажется, лучший путь.