Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在包级别上选择文件日志记录级别_Java_Log4j - Fatal编程技术网

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

Java 在包级别上选择文件日志记录级别,java,log4j,Java,Log4j,我有几个日志文件logfile和debugLogFile。多了一个调试信息,少了一个,但仍然需要一些。在未来,我希望有第三个文件与信息量之间的东西这两个 我要求log4j将包MyPck记录在INFO级别。这是我需要的日志文件。但是对于debugLogFile,我需要为MyPck设置DEBUG级别。这是一个问题 logFile和debugLogFile都具有Threshold=ALL。我需要有可能在每个日志文件中写入所有级别信息。例如logfile将包含MyPck的DEBUG级别和MyPck1的I

我有几个日志文件
logfile
debugLogFile
。多了一个调试信息,少了一个,但仍然需要一些。在未来,我希望有第三个文件与信息量之间的东西这两个

我要求
log4j
将包
MyPck
记录在
INFO
级别。这是我需要的
日志文件
。但是对于
debugLogFile
,我需要为
MyPck
设置
DEBUG
级别。这是一个问题

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 appender中。

当您将
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获取第一个appender的所有消息的副本。

在本例中,日志文件保持为空。详情请参阅