阈值在Log4J中是什么意思?


80

我有一个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

1
另请参见log4j的生产设置,以了解级别和阈值对log4j锁定和性能的影响。
Vadzim 2013年

Answers:


123

您在这里有两件事:记录器和附加器。不幸的是,您为两者选择了相同的名称,这并不太清楚。

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

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


对我来说,“阈值”并不适合。我通过使用xml配置启动了log4j,在附加程序中,它被称为“级别”,其含义是threshold。我认为具有两个不同标签(label,threshold)的同一概念(限制日志严重性)会使理解变得更加困难(如果到目前为止我确实确实理解了这一点)。但是我还是不会说英语。
德克·舒马赫

33

阈值是要记录的消息的第二个过滤器

例如:

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

如果将Logger设置为DEBUG级别,并将appender Threshold设置为Error,则仅使用Appender TextProcessor时将记录Error和更高严重性的消息。

使用阈值是,您可以定义具有不同阈值级别的不同附加程序,例如,在上述示例中,您还可以启用InfoLogger并启用Info级消息记录功能

 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以获取更多详细信息


25

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


13

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

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
...

从上面的设置进行日志记录的模式

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

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

**关于继承和可加性,有些事情比较复杂,但是您应该首先从基本和简单的事情开始。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.