- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为什么是Log4j rootLogger
在我的应用程序中没有根据级别过滤日志事件?在我的 log4j.properties
中,我有几个记录器:
log4j.rootLogger=info,stdout
log4j.logger.com.name.myapp=debug,myapp
log4j.logger.org.castor=debug,castor
log4j.logger.org.exolab.castor=debug,castor
log4j.logger.org.hibernate=debug,hibernate
log4j.logger.org.springframework=debug,spring
每个记录器都接收并记录了DEBUG
及以上级别的大量日志事件,这是我所期望和期望的。然而,尽管 rootLogger
被设置为级别 INFO
,它也显示所有这些事件,包括 DEBUG
事件,这不是我期望的,而不是我想要的。相反,我希望它过滤 DEBUG
事件,但只显示 INFO
和更高级别的事件(WARN
,ERROR
和 FATAL
),这也是我想要的。为什么 rootLogger 显示所有事件?
最佳答案
查看此 answer类似question关于 Log4j 中的记录器链接:
The way Log4j chaining works is a bit counter intuitive (to me at least). If the request level is equal to or above the threshold of the most specific matching logger, it is accepted. Once the request is accepted, it gets handled by the complete chain of ancestors regardless of their thresholds!
这意味着无论您将根记录器的阈值设置到什么级别,它总是会接受并输出任何其他记录器接受的日志事件,除非您禁用该子记录器的链接或明确设置其阈值附加到更高级别。
因此,在这种情况下,有两种方法可以防止根记录器从其他记录器捕获事件。第一种是更有选择性的禁用日志事件链的方法:
log4j.additivity.com.name.myapp=false
log4j.additivity.org.castor=false
log4j.additivity.org.exolab.castor=false
log4j.additivity.org.hibernate=false
log4j.additivity.org.springframework=false
第二种方法更简单,但限制更多,因为它抑制了控制台上低于 INFO
的所有事件(DEBUG
和 TRACE
):
log4j.appender.stdout.Threshold=info
关于java - 为什么 Log4j rootLogger 不根据事件级别过滤日志事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3023690/
我有一个使用 log4j2 进行日志记录的 Maven 项目。我想覆盖 RootLogger 的模式。 这是我的 log4j2.properties 文件: status = debug name=
如何使用 rootlogger = debug, stdout, logfile 配置 log4j.properties 和 org.apache.httpclient = debug 哪个进入日志文
我想在记录到文件时禁用到控制台的输出。请参阅下面的配置文件: log4j.rootLogger=info,stdout log4j.appender.stdout=org.apache.log4j.C
我已经为我需要的所有日志文件定义了附加程序。因此,我认为 rootLogger 不需要附加程序,因为 rootLogger 中没有任何内容可登录。因此,我将 log4j.properties 中的行更
我有一个 log4J 设置,其中根记录器应该将 ERROR 级别及更高级别的消息记录到控制台,另一个记录器将所有内容记录到系统日志。 log4j.properties 是: # Root logger
为什么是Log4j rootLogger 在我的应用程序中没有根据级别过滤日志事件?在我的 log4j.properties 中,我有几个记录器: log4j.rootLogger=info,stdo
java如何在运行时动态开启或关闭log4j2中rootLogger的一个appender? 例如,我想禁用 Console Appender: ...
log4j.properties 文件中的 log4j.rootLogger 属性有何意义?如果我不使用此属性会发生什么? 示例: # Set root logger level to DEBUG a
log4j.properties文件中log4j.rootLogger属性的意义是什么?如果我不使用此属性会怎样? 示例: # Set root logger level to DEB
我正在尝试诊断我的 Web 应用程序中的生产内存泄漏。该应用程序是在 Tomcat 7 和 mySQL 上运行的 GWT 应用程序,在 Debian 上运行 OpenJDK 1.6.0_18。 我启动
我是一名优秀的程序员,十分优秀!