在包级别选择文件日志记录级别



我有几个日志文件logfiledebugLogFile。一个 - 更多的调试信息,第二个更少的,但仍然需要有一些。将来我希望有第三个文件,其中包含介于这两个之间的信息数量。

我要求log4j INFO级别记录包MyPck。我需要logfile.但是我需要DEBUG水平才能MyPck debugLogFile.这是一个问题。

logFiledebugLogFile都有Threshold=ALL.我需要在每个日志文件中都有可能写入所有级别信息。例如,logfile将包含MyPckDEBUG级别和MyPck1INFO级别,debugLogFile将包含MyPckINFO级别和MyPck1DEBUG。 如何解决这个问题?

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

请注意,第二个追加程序获取第一个追加程序的所有消息的副本。

最新更新