Log4j: несколько категорий со специализациями - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть некоторые сомнения по поводу категорий log4j.

У меня есть три категории ...

  • Program
  • Program.BUILD
  • Program.QUERY

Когда я определяю следующее log4j.properties:

log4j.logger.program = DEBUG, стандартный вывод, файл

log4j.logger.program.BUILD = DEBUG, файл

а на Яве я звоню:

Logger logger = Logger.getLogger("program.BUILD");

Предположим, что стандартный вывод и файл являются приложением к консоли и файлу соответственно.

Моя проблема в том, что когда я указываю две категории, как показано, логи `program.BUILD записываются в консоль и файл. Но он был указан только для файла appender. Затем log4j делает его наследством?

Я хотел бы указать три категории, но при указании он поймал ТОЛЬКО program.BUILD то, что было указано в этой категории, без использования общей категории (программы). Но если не указано, категории program.QUERY и program.BUILD выбирают категорию программы, поскольку она будет представлять две неуказанные категории.

Как я могу это сделать?

1 Ответ

1 голос
/ 12 декабря 2011

Да, Log4j имеет систему наследования. Вы можете отключить его (то есть не допустить, чтобы сообщения журнала всплывали до родительской категории) с флагом «additivity = false».

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

(см. http://logging.apache.org/log4j/1.2/manual.html)

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