Подтвердить что ты не робот

Фильтрация сообщений log4j из сторонних фреймворков?

Как фильтровать сообщения журнала из внешних сторонних фреймворков? Я использую Hibernate и Spring framework, и я хотел бы подавить журналы, чтобы отображались только мои log4j-журналы.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Вам нужно установить logger <level value="off"/>, если вы хотите фильтровать журналы из пакета, но сохраняйте конфигурацию регистратора для последующего использования. Вы также можете установить его на самый высокий уровень для регистрации только в случае ошибки или фатальной проблемы.

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

<logger name="org.springframework">
    <level value="off"/>
</logger>
<logger name="org.hibernate">
    <level value="off"/>
</logger>

Ответ 3

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

log4j.logger.<name>=FATAL

В log4j.xml синтаксис

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

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

Ответ 4

Просто не добавляйте эти пакеты в свои 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