log4j (1.2.15) ведение журнала в разные файлы журнала DailyRollingFileAppender для разных уровней журнала из одного пакета? - PullRequest
3 голосов
/ 03 августа 2020

Я пытаюсь записать журналы в 2 разных файла журнала DailyRollingFileAppender для разных уровней журнала (в частности, INFO & ERROR) из одного и того же пакета. Ниже приведен мой файл log4j.properties:

log4j.rootLogger=INFO,webAppDRFA

log4j.category.com.webapp.controller.sd=INFO,sdInfoDRFA
log4j.category.com.webapp.controller.sd=ERROR,sdErrorDRFA
log4j.additivity.com.webapp.controller.sd=false

log4j.category.com.webapp.controller.td=INFO,tdInfoDRFA
log4j.category.com.webapp.controller.td=ERROR,tdErrorDRFA
log4j.additivity.com.webapp.controller.td=false

log4j.appender.webAppDRFA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.webAppDRFA.DatePattern='.'dd-MMM-yyyy'.log'
log4j.appender.webAppDRFA.File=D:\\WebApp-Logs\\CMWebappLogs\\webapp.log
log4j.appender.webAppDRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.webAppDRFA.layout.ConversionPattern=%-5p[%d \: Class-%C \: Method-%M]\: %m%n
log4j.appender.webAppDRFA.Threshold=WARN

#--[START] Info & Error DailyRollingFileAppender logging config for SD--
log4j.appender.sdInfoDRFA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.sdInfoDRFA.DatePattern='_'MM-DD-YYYY'.log'
log4j.appender.sdInfoDRFA.File=D:\\CMWebappLogs\\SD\\Info_Log\\SD_Info.log
log4j.appender.sdInfoDRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.sdInfoDRFA.layout.ConversionPattern=%-5p[%d \: Class-%C \: Method-%M]\: %m%n
log4j.appender.sdInfoDRFA.filter.lrf4SDJIDRFA=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.sdInfoDRFA.filter.lrf4SDJIDRFA.levelMin=INFO
log4j.appender.sdInfoDRFA.filter.lrf4SDJIDRFA.levelMax=INFO
log4j.appender.sdInfoDRFA.filter.lrf4SDJIDRFA.acceptOnMatch=true

log4j.appender.sdErrorDRFA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.sdErrorDRFA.DatePattern='_'MM-DD-YYYY'.log'
log4j.appender.sdErrorDRFA.File=D:\\CMWebappLogs\\SD\\Error_Log\\SD_Error.log
log4j.appender.sdErrorDRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.sdErrorDRFA.layout.ConversionPattern=%-5p[%d \: Class-%C \: Method-%M]\: %m%n
log4j.appender.sdErrorDRFA.filter.lrf4SDJEDRFA=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.sdErrorDRFA.filter.lrf4SDJEDRFA.levelMin=ERROR
log4j.appender.sdErrorDRFA.filter.lrf4SDJEDRFA.levelMax=ERROR
log4j.appender.sdErrorDRFA.filter.lrf4SDJEDRFA.acceptOnMatch=true
#--[END] Info & Error DailyRollingFileAppender logging config for SD--

#--[START] Info & Error DailyRollingFileAppender logging config for TD--
log4j.appender.tdInfoDRFA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.tdInfoDRFA.DatePattern='_'MM-DD-YYYY'.log'
log4j.appender.tdInfoDRFA.File=D:\\CMWebappLogs\\TD\\Info_Log\\TD_Info.log
log4j.appender.tdInfoDRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.tdInfoDRFA.layout.ConversionPattern=%-5p[%d \: Class-%C \: Method-%M]\: %m%n
log4j.appender.tdInfoDRFA.filter.lrf4PAJIDRFA=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.tdInfoDRFA.filter.lrf4PAJIDRFA.levelMin=INFO
log4j.appender.tdInfoDRFA.filter.lrf4PAJIDRFA.levelMax=INFO
log4j.appender.tdInfoDRFA.filter.lrf4PAJIDRFA.acceptOnMatch=true

log4j.appender.tdErrorDRFA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.tdErrorDRFA.DatePattern='_'MM-DD-YYYY'.log'
log4j.appender.tdErrorDRFA.File=D:\\CMWebappLogs\\TD\\Error_Log\\TD_Error.log
log4j.appender.tdErrorDRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.tdErrorDRFA.layout.ConversionPattern=%-5p[%d \: Class-%C \: Method-%M]\: %m%n
log4j.appender.tdErrorDRFA.filter.lrf4PAJEDRFA=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.tdErrorDRFA.filter.lrf4PAJEDRFA.levelMin=ERROR
log4j.appender.tdErrorDRFA.filter.lrf4PAJEDRFA.levelMax=ERROR
log4j.appender.tdErrorDRFA.filter.lrf4PAJEDRFA.acceptOnMatch=true
#--[END] Info & Error DailyRollingFileAppender logging config for TD--

Приведенная выше конфигурация генерирует только файлы Error_log, а файлы Info_log вообще не создаются. Кроме того, созданные файлы Error_log не переносятся на следующую дату. Можно ли вообще выполнить указанное выше требование? Если да, пожалуйста, предложите мне внести исправления.

1 Ответ

2 голосов
/ 05 августа 2020

Проблема в том, что вы перезаписываете конфигурацию category.

Каждую категорию необходимо определить следующим образом:

log4j.category.com.webapp.controller.sd=INFO,sdInfoDRFA,sdErrorDRFA

Вы должны определить минимальный уровень журнала, необходимый для категория для создания трассировок журнала, в вашем случае INFO, и различные дополнения, которые будет использовать категория.

Механизм фильтрации направит различные генерируемые трассировки в соответствующие файлы приложений и журналов.

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