конфигурация нескольких экземпляров log4j - PullRequest
1 голос
/ 25 ноября 2010

Я хочу использовать несколько экземпляров Log4j Logger. Мне нужно прикрепить различные объекты Properties к каждому из этих экземпляров Log4j Logger.

Вот код для настройки для одного экземпляра:

LOG4J = org.apache.log4j.Logger.getLogger(Logger.class);

Properties log4jProps = new Properties();

...

PropertyConfigurator.configure(log4jProps);

Что если я хочу иметь два экземпляра log4j, и каждый из них имеет разные свойства?

1 Ответ

8 голосов
/ 25 ноября 2010

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

Если вам просто нужно несколько приложений, посмотрите здесь:

Вот log4j.properties по вышеуказанной ссылке:

# logj4.properties
log4j.rootCategory = WARN, A
log4j.category.com.lewscanon = WARN, F
log4j.category.com.lewscanon.mouser = DEBUG, X

log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.layout = org.apache.log4j.PatternLayout

log4j.appender.F = org.apache.log4j.RollingFileAppender
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.File = /projects/mouser/logs/lewscanon.log
log4j.appender.F.MaxFileSize = 512KB
log4j.appender.F.MaxBackupIndex = 2

log4j.appender.X = org.apache.log4j.RollingFileAppender
log4j.appender.X.layout = org.apache.log4j.PatternLayout
log4j.appender.X.File = /projects/mouser/logs/mouser.log
log4j.appender.X.MaxFileSize = 512KB
log4j.appender.X.MaxBackupIndex = 2

log4j.appender.A.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n
log4j.appender.F.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n
log4j.appender.X.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n

Эти строки:

log4j.rootCategory = WARN, A
log4j.category.com.lewscanon = WARN, F
log4j.category.com.lewscanon.mouser = DEBUG, X

говорят следующее:

  • Записывают все в appender A (консольный).Регистрируйте только предупреждения и выше
  • Записывайте все, от пакета com.lewscanon, до appender F (который идет в файл lewscanon.log).Регистрируйте только предупреждения и выше
  • Записывайте все, от пакета com.lewscannon.mouser, до appender X (который идет в файл mouser.log).Только отладка журнала и выше

Также можно указывать полные имена классов:

log4j.category.com.lewscanon.SomeClass = WARN, F

означает запись всего от com.lewscanon.SomeClass класса до appender F, уровня предупреждения и выше.

Полагаю, что вышеупомянутое достаточно гранулировано, но если вам абсолютно необходимо это более детально (хотя я не думаю, что это достаточно практично), по:

Logger.getLogger(String name) принимает имена.Таким образом, вы можете сделать что-то вроде:

log4j.category.myFancyLogger = INFO, F

и использовать Logger.getLogger("myFancyLogger"), чтобы получить регистратор, который регистрируется в appender F с информацией об уровне.

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