谁能解释一下Log4j的以下配置是做什么的?
我对标签 Configuration = WARN 和 Root level="INFO" 特别感到困惑。
如果配置意味着捕获 WARN 消息,为什么是 Root level INFO? 它们之间的关系如何?
该代码段是否将附加程序控制台分配给根记录器?
<?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>
答案 0 :(得分:1)
status
属性配置 StatusLogger
的级别。这是一个特殊的记录器,位于记录器层次结构之外,它将 Log4j2 框架的内部事件记录到 System.err
。
它可能仅在您调试新的 Log4j2 配置时有用。
另一方面,level
记录器的 <Root>
属性配置了所有记录器的默认级别。
答案 1 :(得分:1)
Piotr 的回答是正确的。不过,更详细地说,Log4j 实际上有多个 Log4j API 实现。
在 API 中是 SimpleLogger,它在不存在日志记录实现时允许最少的日志记录。它只允许通过系统属性进行最少的配置。
API 中还有 StatusLogger。它还实现了 Log4j API。 Log4j 实现在内部使用 Log4j API 进行所有诊断日志记录。由于它必须记录自身的启动和配置,因此它使用 StatusLogger 来做到这一点。这个实现有点类似于 SimpleLogger,因为它不是很可配置。您几乎唯一可以控制的是它是否记录到控制台或文件。
如果您设置 status="OFF",那么即使您的配置搞砸了,Log4j 也不会打印任何诊断信息。但是,即使这样,您也可以在启动时指定 -Dlog4j2.debug=true 并且 Log4j 将发出调试日志。这些在配置出现问题时非常有用。