Исключить класс из приложения log4j - PullRequest
8 голосов
/ 10 ноября 2010

У меня есть файл log4j.properties, который выглядит примерно так:

log4j.logger.com.foo=INFO, foo-log
log4j.logger.com.foo.BarImpl=INFO, bar-log

Обычно для классов, которые соответствуют структуре пакета com.foo, я бы хотел, чтобы использовался аппендер foo-log.Однако в этом пакете я хочу, чтобы журналы BarImpl использовали приложение bar-log, а не приложение foo-log.На данный момент любые журналы, написанные BarImpl, обрабатываются как foo-log, так и bar-log (как и ожидалось).Как заставить приложение foo-log игнорировать класс BarImpl?

1 Ответ

14 голосов
/ 10 ноября 2010

Из документации Log4j:

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

Попробуйте поэкспериментировать со следующей строкой (или аналогичной):

log4j.additivity.com.foo.BarImpl = false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...