Нежелательная память от библиотек вендоров, переполнение log4j - PullRequest
1 голос
/ 05 августа 2009

Как я могу лучше всего предотвратить эти библиотеки от переполнения моей шины приложения log4j? Я не хочу устанавливать все в ОШИБКУ, но в этом случае библиотека поставщика загружает файл журнала со скоростью около гигабайта в день. Я не хочу, чтобы он что-либо записывал в этот файл ...

Ответы [ 3 ]

7 голосов
/ 05 августа 2009

Вендор разумно использует категории? Если это так, установите только для их корневой категории на ОШИБКУ и оставьте все остальное как обычно. Таким образом, вы сможете отфильтровать их сообщения, не связанные с ошибками, но при этом увидеть свою собственную информацию / debug / и т. Д.

Это большая часть категорий:)

4 голосов
/ 08 августа 2009

Как подсказывает ответ Джона Скита , вы должны настроить log4j на игнорирование классов из библиотеки поставщика. Обычно существует файл с именем log4j.xml, в который можно напечатать имена пакетов и пороговую категорию следующим образом:

   <category name="httpclient.wire">
      <priority value="INFO"/>
   </category>

   <category name="org.apache.commons.httpclient">
      <priority value="WARN"/>
   </category>

   <category name="org.hibernate">
      <priority value="DEBUG"/>
   </category>

   <category name="net.sf.jasperreports">
      <priority value="ERROR"/>
   </category>

Подробнее смотрите в руководстве .

0 голосов
/ 05 августа 2009

Эх, если ничего не помогает, вы можете расширить LogImpl и сделать так, чтобы он вставлял свойство во все ваши вызовы регистрации и устанавливал PropertyFilter на всех ваших дополнениях. Надеюсь, что до этого не дойдет.

(учтите, это исходит от log4net - я предполагаю, что все работает в основном одинаково, но я просто стреляю с бедра)

...