Log4j-配置和级别之间的差异



有人能解释一下Log4j的以下配置是做什么的吗?

我特别混淆了标签Configuration=WARN和Rootlevel=;INFO";。

如果配置意味着捕获警告消息,为什么根级别是INFO?它们是如何联系的?

该代码段是否将appender控制台分配给根记录器?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

Piotr的回答是正确的。不过,更详细地说,Log4j实际上有多个Log4jneneneba API实现。

在API中是SimpleLogger,当没有日志记录实现时,它允许最小的日志记录。它只允许通过系统属性进行最低限度的配置。

API中还有StatusLogger。它还实现了Log4j API。Log4j实现在内部使用Log4j API进行所有诊断日志记录。由于它必须记录自身的启动和配置,因此它使用StatusLogger来完成此操作。此实现与SimpleLogger有点相似,因为它不是很可配置。几乎你唯一能控制的就是它是登录到控制台还是文件。

如果将状态设置为"0";OFF";那么即使您的配置被搞砸了,Log4j也不会打印任何诊断信息。但是,即使这样,您也可以在启动时指定-Dlog4j2.debug=true,并且Log4j将发出调试日志。当配置出现问题时,这些非常有用。

status属性配置StatusLogger的级别。这是一个特殊的记录器,位于记录器层次结构之外,它将Log4j2框架的内部事件记录到System.err

它可能只有在调试新的Log4j2配置时才有用。

另一方面,<Root>记录器的level属性配置所有记录器的默认级别。

相关内容

最新更新