我有几个日志文件logfile
和debugLogFile
。一个 - 更多的调试信息,第二个更少的,但仍然需要有一些。将来我希望有第三个文件,其中包含介于这两个之间的信息数量。
我要求log4j
INFO
级别记录包MyPck
。我需要logfile
.但是我需要DEBUG
水平才能MyPck
debugLogFile
.这是一个问题。
logFile
和debugLogFile
都有Threshold=ALL
.我需要在每个日志文件中都有可能写入所有级别信息。例如,logfile
将包含MyPck
的DEBUG
级别和MyPck1
的INFO
级别,debugLogFile
将包含MyPck
的INFO
级别和MyPck1
的DEBUG
。 如何解决这个问题?
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
这应该会让你朝着正确的方向前进:
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 追加器中。
当你将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
请注意,第二个追加程序获取第一个追加程序的所有消息的副本。