Как фильтровать сообщения журнала из внешних сторонних фреймворков? Я использую Hibernate и Spring framework, и я хотел бы подавить журналы, чтобы отображались только мои log4j-журналы.
Фильтрация сообщений log4j из сторонних фреймворков?
Ответ 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