Log4j определить несколько регистраторов - PullRequest
0 голосов
/ 07 декабря 2018

Я пишу REST-сервис на Java (со стандартом JAX-RS на Tomcat 9) и хочу добавить журналы в мою программу для отслеживания его работы при вызове.

Поэтому я используюLog4j (версия 1.2.17) для записи моих журналов, и я хочу написать разные файлы журналов для каждой из моих служб, работающих на моей REST-службе, но мне нужно использовать только одно свойство log4j для всего приложения

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

--------------------------------
| Method | Log File            |
|------------------------------|
| /A     | MyRestService_A.log |
| /B     | MyRestService_B.log | 
--------------------------------

Поэтому я записываю это как конфигурацию Log4j ( restServiceLogger.properties ):

log4j.rootLogger=A,B

#/A
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=logs/MyRestService_A.log
log4j.appender.A.MaxFileSize=5MB
log4j.appender.A.MaxBackupIndex=5
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n

#/B
log4j.appender.B=org.apache.log4j.RollingFileAppender
log4j.appender.B.File=logs/MyRestService_B.log
log4j.appender.B.MaxFileSize=5MB
log4j.appender.B.MaxBackupIndex=5
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n

Затемв методе / A я инициализирую регистратор следующим образом:

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("A");

Затем в методе / B я инициализирую регистратор следующим образом:

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("B");

Проблема в том, что когда я пишу свои журналы, все они записываются в файл журнала / A ( MyRestService_A.log ).

Как это исправить, используя толькоодно свойство для всего проекта?

Спасибо

1 Ответ

0 голосов
/ 08 декабря 2018

Вам необходимо определить регистратор в вашем файле конфигурации и использовать его для получения экземпляра Logger в вашем файле класса

например,

log4j.logger.A=,A    
log4j.additivity.A=false

и в вашем файле класса, получитьрегистратор по имени

например, в классе A

Logger logger = Logger.getLogger("A");`

Ваши файлы log4j.properties должны быть такими, как показано ниже.

log4j.rootLogger=A,B

#/A
log4j.logger.A=,A
log4j.additivity.A=false
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=logs/MyRestService_A.log
log4j.appender.A.MaxFileSize=5MB
log4j.appender.A.MaxBackupIndex=5
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n

#/B
log4j.logger.B=,B
log4j.additivity.B=false
log4j.appender.B=org.apache.log4j.RollingFileAppender
log4j.appender.B.File=logs/MyRestService_B.log
log4j.appender.B.MaxFileSize=5MB
log4j.appender.B.MaxBackupIndex=5
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...