переопределить уровень подкатегории в конфигурации log4j - PullRequest
0 голосов
/ 29 января 2009

В моем приложении есть некоторый аудит. Каждое событие аудита имеет собственную категорию log4j с именем, начинающимся с той же строки.

EG: название категории общего аудита: com.company.audit

Имя категории веб-входа: com.company.audit.web.login
создать что-то: com.company.audit.api.create и т.д ..

некоторые категории должны быть зарегистрированы по умолчанию, а некоторые нет =>

<category name="com.compamy.audit" additivity="true">
    <priority value="INFO"/>
</category>

<category name="com.company.audit.web.login" additivity="true">
  <priority value="DEBUG">
</category>

По умолчанию INFO вторая категория не должна регистрироваться. По крайней мере, я так думал, но это не работает. Любая помощь, как переопределить уровень ведения журнала в «подкатегории».

ПРИМЕЧАНИЕ: у меня нет большой возможности изменить схему именования в целом

ДОБАВЛЕНО:

Вот конфигурация appender:

<appender class="org.apache.log4j.RollingFileAppender" name="Company_AUDIT">

<param name="File" value="${jboss.server.log.dir}/company_audit.log"/>

<param value="10000KB" name="MaxFileSize"/>

<param value="10" name="MaxBackupIndex"/>

<layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="foo"/>
</layout>

</appender>

1 Ответ

1 голос
/ 30 января 2009

Ваша конфигурация означает: для категории com.company.audit регистрировать все сообщения уровня INFO или выше. Для com.company.audit.web.login регистрируйте все сообщения уровня DEBUG или выше. Таким образом, все сообщения второй категории регистрируются, что вы и просили.

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

  1. в вашем коде, используйте соглашение, что все сообщения в com.company.audit будут регистрироваться на уровне INFO, а все сообщения в com.company.audit.web.login будут регистрироваться на уровне DEBUG. В вашей конфигурации вам нужно только установить уровень основной категории:

    • DEBUG: показать все сообщения
    • INFO: не отображать «необязательные» сообщения (т.е. сообщения из подкатегории)
  2. В конфигурации установите com.company.audit.web.login на уровень OFF, если вы хотите отключить его сообщения. Если вы хотите активировать его, просто закомментируйте строку (она унаследует конфигурацию от основной категории).

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

...