Настройка Log4j2 для нескольких пакетов - PullRequest
1 голос
/ 14 февраля 2020

Это мой файл свойств. Я определил 2 пакета здесь. Мне нужен регистратор для всего моего приложения. Что, если у меня есть 10-12 пакетов в моем приложении. Это единственный подход ??

name=PropertiesConfig
property.filename =/myfolder
appenders = console, file

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{dd MMM yyyy HH:mm:ss} [%-5p] [%c] [%M] %x - %m%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/logs.txt
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{dd MMM yyyy HH:mm:ss} [%-5p] [%c] [%M] %x - %m%n

loggers=file,myfile
logger.file.name=servlets
logger.file.level = debug,info
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE


logger.myfile.name=com.util
logger.myfile.level = debug,info
logger.myfile.appenderRefs = file
logger.myfile.appenderRef.myfile.ref = LOGFILE

rootLogger.level =com.debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

1 Ответ

0 голосов
/ 14 февраля 2020

Во-первых, ваша конфигурация мне не подходит. У вас есть

logger.myfile.name=com.util
logger.myfile.level = debug,info
logger.myfile.appenderRefs = file
logger.myfile.appenderRef.myfile.ref = LOGFILE

rootLogger.level =com.debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

Вы не можете указать 2 уровня на logger.myfile.level. Указание отладки будет включать все события отладки, информации, предупреждения, ошибок и фатальных событий.

Во-вторых, у вас есть rootLogger.level = com.debug. Я бы предположил, что это должно быть rootLogger.level=debug?

Чтобы ответить на ваш вопрос, да, вы должны настроить регистратор для каждого шаблона, который вы хотите сопоставить. Однако объявление Logger может делегировать часть своей конфигурации своему родителю. Единственное, что обычно требуется, это атрибут уровня.

Таким образом, вы можете указать:

logger.a.name=com.util.marketing.sub1
logger.a.level=debug
logger.b.name=com.util.marketing.sub2
logger.b.level=error
logger.c.name=com.util.marketing
logger.c.level=info
logger.c.appenderRefs=file
logger.c.appenderRef.file=LOGFILE

Лично я предпочитаю XML, так как считаю его более кратким и понятным. Выше будет

<Logger name="com.util.marketing.sub1" level="DEBUG"/>
<Logger name="com.util.marketing.sub2" level="ERROR"/>
<Logger name="com.util.marketing" level="INFO">
  <AppenderRef ref="LOGFILE"/>
</Logger>
...