Сторонние банки, создающие файлы журналов - PullRequest
2 голосов
/ 04 февраля 2009

Итак, мы столкнулись с интересной проблемой сегодня. У нас есть веб-приложение Java EE, которое использует несколько сторонних jar-файлов. Это включает Hibernate.

Мы используем API регистрации Java, который поставляется вместе с SDK для целей регистрации. Обычно мы довольно слабы при ведении журнала, но столкнулись с этой проблемой с одним из наших сторонних jar-файлов, использующих log4j для создания собственного файла журнала. Он не только записывал операторы из своего собственного кода, он даже начал записывать отладки для кода гибернации, в результате чего пакетное задание заносило журналы на 3 ГБ за мгновение.

У меня есть 2 проблемы с этим:

  1. Мне нужно исправить эту проблему с журналированием (если возможно, я не хочу выдергивать или изменять конфигурацию log4j в стороннем фляге). Есть ли хороший способ сделать это, кроме изменения или извлечения конфигурации log4j в стороннем банке ИЛИ с помощью моей собственной конфигурации log4j, которая переопределяет конфигурацию в стороннем банке? Мне не нравится ни один из двух вариантов, но я хочу делать то, что лучше.
  2. Я хочу спросить, кошерно ли ожидать от сторонних библиотек веселого выхода из системы? Я думаю, что это плохой дизайн. Я хочу узнать мнение сообщества по этому поводу.

Я хочу, чтобы сторонние библиотеки регистрировали ОШИБКИ. Тем не менее, я думаю, что это немного неловко, что этот сторонний jar для регистрации DEBUG из пакетов, кроме тех, за которые он отвечает. например в моем случае этот сторонний jar регистрирует отладки Hibernate, хотя он даже не вызывает никаких методов hibernate. Пакетное задание, которое мы выполняли, даже не вызывало API в этом банке. Похоже, что моя собственная конфигурация log4j переопределяет то, что там, кажется, лучший путь.

Ответы [ 2 ]

1 голос
/ 04 февраля 2009

Из того, что я помню, вам просто нужно предоставить свой собственный файл свойств log4j в classpath перед вашими JAR-файлами, которые выполняют регистрацию, и этот файл будет выбран. Возвращаясь к глубине памяти, Hibernate по крайней мере берет это из корня JAR-файла, поэтому вам не нужно упаковывать свои свойства.

В более широком смысле, да, я определенно хочу, чтобы мои библиотеки регистрировались - иначе как вы узнаете, что что-то пошло не так, если нет журнала?

1 голос
/ 04 февраля 2009

Если они используют log4j или другую обычно используемую инфраструктуру ведения журналов, вы можете переопределить ее конфигурацию, предоставив другой lo4j.properties ранее в пути к классам. Ведение журнала сторонних разработчиков, на мой взгляд, хорошо, если вы можете легко настроить необходимый уровень ведения журнала, что имеет место, если они используют log4j. Настроить систему ведения журналов всегда легче, чтобы выводить меньше информации, чем кодировать сторонний код для добавления в нее ведения журнала!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...