Filtering out log4j messages from third-party frameworks?

How do I filter log messages from external third party frameworks? I am using Hibernate and Spring framework and I would like to suppress the logs so that only my log4j logs appears.

31
задан skaffman 26 August 2010 в 13:35
поделиться

4 ответа

В моем файле log4j.properties я установил уровень ведения журнала корневого регистратора на ERROR. Затем для пакетов, которые я специально хочу регистрировать, например код моего приложения, я устанавливаю уровень ведения журнала INFO или DEBUG.

log4j.rootLogger=ERROR, stdout
log4j.logger.com.initech.tps=DEBUG
log4j.logger.org.hibernate.SQL=INFO

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

Кстати, полное отключение входа в систему для стороннего компонента кажется мне плохой идеей. Например, Spring относительно шумный и использует WARN для вещей, о которых мне действительно не нужно знать, но если он регистрирует запись ERROR для чего-то, что я хочу видеть.

34
ответ дан 27 November 2019 в 22:19
поделиться

Вы можете сделать это, изменив уровень ведения журнала в файле log4j.properties/log4j.xml.

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

Чтобы отключить ведение журнала из пакетов hibernate и springframework, необходимо добавить в log4j.xml следующие записи:

<logger name="org.springframework">
    <level value="off"/>
</logger>
<logger name="org.hibernate">
    <level value="off"/>
</logger>
14
ответ дан 27 November 2019 в 22:19
поделиться

Просто не добавляйте эти пакеты в свои log4j.properties. Например, вы должны иметь это для Spring в своем файле свойств. Удалите его, если у вас есть записи, как показано ниже (все, что начинается с org.springframework). То же самое нужно сделать для спящего режима.

#Logs the SQL from Spring
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=ERROR
#Logs the SQL parameters from Spring
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=ERROR

Также, как уже упоминалось, вы также должны установить следующее. Я забыл упомянуть об этом.

log4j.rootLogger=FATAL  
or   
log4j.rootLogger=ERROR  
2
ответ дан 27 November 2019 в 22:19
поделиться

В log4j.properties вы можете определить отдельные уровни для каждого регистратора:

log4j.logger.<name>=FATAL

В log4j.xml используется следующий синтаксис

<logger name="<name>">
  <level value="fatal"/> 
</logger>

<имя> часто является полным именем класса. Вы можете использовать WARN или ERROR вместо FATAL

3
ответ дан 27 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: