Log4J的阈值意味着什么?

时间:2011-02-25 16:36:33

标签: java logging log4j

大家好     我有一个log4j属性,如下所示。 TextProcessor.log中记录的所有内容都高于WARN级别。我不明白这里设置的调试阈值。有人可以解释阈值的作用吗

log4j.logger.TextProcessor=warn,TextProcessor


log4j.appender.TextProcessor=org.apache.log4j.RollingFileAppender
log4j.appender.TextProcessor.File=C:/project/logs/TextProcessor.log
log4j.appender.TextProcessor.MaxFileSize=10MB
log4j.appender.TextProcessor.MaxBackupIndex=10
log4j.appender.TextProcessor.Threshold=debug
log4j.appender.TextProcessor.layout=org.apache.log4j.PatternLayout
log4j.appender.TextProcessor.layout.ConversionPattern=[%d] [%5p] (%F:%L) - %m%n

提前致谢

4 个答案:

答案 0 :(得分:119)

这里有两件事:记录器和追加器。不幸的是,你为两者选择了相同的名称,但这并不是很清楚。

记录器的最低级别设置为警告,这意味着您使用此记录器记录的所有内容(至少没有警告级别)将被忽略。

记录器接受消息后,它会被发送到一个或多个appender(文件,控制台,邮件服务器等)。这些appender中的每一个都可以定义阈值。例如,您可以将控制台中的消息限制为错误,但接受日志文件中的警告消息。

答案 1 :(得分:29)

阈值是要记录的邮件的第二个过滤器

例如:

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.TextProcessor.Threshold=Error

如果Logger设置为DEBUG级别,并且appender Threshold设置为Error,那么只使用appender TextProcessor错误和更高级别的消息将被记录。

使用阈值是,您可以定义具有不同阈值级别的不同appender,例如,在上述示例中,您还可以使InfoLogger启用信息级别消息记录

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.InfoLogger.Threshold=INFO

要了解级别,log4j中有级别的日志记录

FATAL: shows messages at a FATAL level only  
ERROR: Shows messages classified as ERROR and FATAL  
WARNING: Shows messages classified as WARNING, ERROR, and FATAL  
INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL  
DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL  
TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL 
OFF : No log messages display

转到URL了解更多详情

答案 2 :(得分:25)

记录级别为TRACEDEBUGINFOWARNERRORFATAL。您将能够根据严重性选择在代码中的哪个级别进行日志记录。例如,您可以记录方法的进入和退出,但可以选择以DEBUG级别进行记录。这将帮助您调试代码,因为默认情况下它将在控制台上打印出来(默认控制台appender已打开)。在开始生产时,您可以将阈值增加到ERROR,并阻止应用程序在控制台或日志文件上打印出不那么有用的详细信息。

答案 3 :(得分:9)

为您提供从属性配置文件到日志消息流的简单映射。 (我隐藏了一些配置行以最小化)

log4j.rootLogger=ALL, stdout
log4j.logger.com.xyz=INFO, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
...

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.Threshold=WARN
...

schema of logging from settings above

要了解它是什么,你应该知道:

  • 检索到最左边时记录的级别增加:TRACE,DEBUG,INFO,WARN,ERROR和FATAL
  • 记录程序从应用程序接受的最低级别日志记录。
  • 决定将写入内容的appender上的最低级别日志记录

**继承和可加性有一些更复杂的事情,但你应该先从基本和简单的事情开始。