我有几个日志文件logfile
和debugLogFile
。一个 - 更多调试信息,第二少,但仍需要一些。将来我希望第三个文件的信息量介于这两个之间。
我要求log4j
在MyPck
级别记录包INFO
。我需要logfile
。但我DEBUG
MyPck
需要debugLogFile
级别。这是一个问题。
logFile
和debugLogFile
都有Threshold=ALL
。我需要在每个日志文件中写入所有级别信息。例如,logfile
将DEBUG
包含MyPck
级别,INFO
包含MyPck1
,debugLogFile
将包含INFO
级别MyPck
对于DEBUG
,1}}和MyPck1
。如何解决这个问题?
log4j.rootLogger=ALL, logfile, debugLogFile
log4j.logger.MyPck=INFO
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logFile.log
log4j.appender.logfile.Threshold=ALL
log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.debugLogFile.File=debugLogFile.log
log4j.appender.debugLogFile.Threshold=ALL
答案 0 :(得分:0)
这应该让你朝着正确的方向前进:
log4j.rootLogger=TRACE, defaultFile
log4j.appender.defaultFile=org.apache.log4j.RollingFileAppender
log4j.appender.defaultFile.File=defaultFile.log
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logFile.log
log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.debugLogFile.File=debugLogFile.log
log4j.logger.MyPck=DEBUG,logFile
log4j.logger.MyPck1=INFO,logFile
log4j.logger.MyPck=INFO,debugLogFile
log4j.logger.MyPck1=DEBUG,debugLogFile
log4j.additivity.MyPck=false
log4j.additivity.MyPck1=false
log4j.additivity.MyPck=false
设置可确保MyPck的输出不会出现在rootLogger appender中。
答案 1 :(得分:0)
当您将MyPck
的日志级别设置为INFO
时,实际上将此程序包的阈值设置为INFO
,即该级别下方没有消息将被释放。
因此,您需要将程序包的阈值设置为您要记录的最低公共级别。
然后,下一步是配置记录器的阈值以过滤掉您不想要的任何消息:
log4j.rootLogger=ALL, logfile, debugLogFile
log4j.logger.MyPck=DEBUG
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logFile.log
log4j.appender.logfile.Threshold=INFO
log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.debugLogFile.File=debugLogFile.log
log4j.appender.debugLogFile.Threshold=DEBUG
请注意,第二个appender会获取第一个消息的所有消息的副本。