Можете ли вы объяснить, почему вы хотите несколько регистраторов более подробно?Я не думаю, что возможно иметь несколько экземпляров 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 с информацией об уровне.