Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 阈值在Log4J中是什么意思?_Java_Logging_Log4j - Fatal编程技术网

Java 阈值在Log4J中是什么意思?

Java 阈值在Log4J中是什么意思?,java,logging,log4j,Java,Logging,Log4j,我有一个log4j属性,如下所示。登录到TextProcessor.log的所有内容都高于警告级别。我不理解这里设置的调试阈值。有人能解释一下阈值的作用吗 log4j.logger.TextProcessor=warn,TextProcessor log4j.appender.TextProcessor=org.apache.log4j.RollingFileAppender log4j.appender.TextProcessor.File=C:/project/logs/TextProc

我有一个
log4j
属性,如下所示。登录到
TextProcessor.log
的所有内容都高于警告级别。我不理解这里设置的调试阈值。有人能解释一下阈值的作用吗

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

这里有两件东西:一个记录器和一个appender。不幸的是,您为这两个名称选择了相同的名称,这并不清楚

记录器的最低级别设置为warn,这意味着您使用此记录器记录的所有未达到警告级别的内容都将被忽略


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

日志记录的级别为
跟踪
调试
信息
警告
错误
致命
。您可以根据严重性选择在代码中的哪个级别记录什么。例如,您将能够记录方法的进入和退出,但可以选择在
DEBUG
级别进行记录。这将帮助您调试代码,因为默认情况下,它将在控制台上打印出来(默认的控制台appender处于启用状态)。在投入生产时,您可以将阈值提高到
ERROR
,并防止应用程序在控制台或日志文件上打印出不太有用的详细信息。

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

e、 g:

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.TextProcessor.Threshold=Error
若记录器设置为调试级别,而appender Threshold设置为Error,则appender TextProcessor只会记录错误和更高严重性的消息

Threshold的用法是,您可以使用不同的阈值级别定义不同的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

有关更多详细信息,请转到

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

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

  • 当检索到最左边时,日志记录的级别会增加:跟踪、调试、信息、警告、错误和致命
  • 记录器从应用程序接受的最低级别日志记录
  • appender上的最低级别日志记录,决定要写入的内容

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

另请参阅关于级别和阈值对log4j锁定和性能的影响。对于我来说,“阈值”并不真正合适。我使用xml配置启动了log4j,在appender中它被称为“level”,意思是threshold。我认为相同的概念(限制日志严重性)和两个不同的标签(标签,阈值)使它更难理解(如果我到目前为止确实理解它的话)。但无论如何,我不是一个英语母语的人。为了完整起见,应该说OP的问题是记录器的策略(警告)比附加器(调试)更难控制,并且总是限制性更强的策略获胜。Log4J在配置中使用“警告”,而不是“警告”!!!!
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
...