英文:
log4j (1.2.15) logging to different DailyRollingFileAppender log files for different log levels from same package?
问题
我正在尝试为同一个包的不同日志级别(具体为INFO和ERROR)将日志写入2个不同的DailyRollingFileAppender日志文件。以下是我的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文件不会滚动到下一个日期。是否可以实现上述要求?如果可以,请建议需要进行的更正。
英文:
I'm trying to write logs to 2 different DailyRollingFileAppender log files for different log levels (specifically INFO & ERROR) from the same package. Following is my log4j.properties
file :
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--
The above configuration generates only the Error_log files and Info_log files are not created at all. Also, the Error_log files created do not get rolled over to next date. Can the above requirement be achieved at all? If yes, please suggest me the corrections to be done.
答案1
得分: 2
问题在于你正在覆盖category
配置。
你需要按照以下方式定义每个类别:
log4j.category.com.webapp.controller.sd=INFO,sdInfoDRFA,sdErrorDRFA
你必须定义类别发出日志跟踪所需的最低日志级别,对于你的情况,是INFO
,以及类别将使用的不同appender。
过滤机制将会将不同的发出的日志跟踪路由到相应的appender和日志文件。
英文:
The problem is that you are overwriting the category
configuration.
You need to define each category as follows:
log4j.category.com.webapp.controller.sd=INFO,sdInfoDRFA,sdErrorDRFA
You must define the minimum log level required for the category to emit log traces, in your case, INFO
, and the different appenders that the category will use.
The filtering mechanism will route the different emitted traces to the corresponding appenders and logs files.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论