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

时间:2013-10-28 15:30:08

标签: java log4j

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

我要求log4jMyPck级别记录包INFO。我需要logfile。但我DEBUG MyPck需要debugLogFile级别。这是一个问题。

logFiledebugLogFile都有Threshold=ALL。我需要在每个日志文件中写入所有级别信息。例如,logfileDEBUG包含MyPck级别,INFO包含MyPck1debugLogFile将包含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

2 个答案:

答案 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会获取第一个消息的所有消息的副本。