0

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

我要求在级别log4j登录包。这是我需要的。但我需要有for 的水平。这是个问题。MyPckINFOlogfileDEBUGMyPckdebugLogFile

两者logFile兼有。debugLogFile_ Threshold=ALL我需要有可能在每个日志文件中写入所有级别的信息。例如logfile将包含DEBUGlevel forMyPckINFOforMyPck1并将debugLogFile包含INFOlevel forMyPckDEBUGfor 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
4

2 回答 2

0

当您将日志级别设置为MyPckINFO,您实际上将此包的阈值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

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

于 2013-10-28T17:03:29.283 回答
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 附加程序中。

于 2013-10-28T16:42:58.463 回答