log4j2:父记录器级别低于子记录器

时间:2018-09-04 11:11:22

标签: java logging log4j2

我不确定是否已经回答过。我看到了带有root的情况,但不确定是否同样适用于我的情况。这是我的示例日志文件。考虑案例1:

<logger name="com.abc" level="warn" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<logger name="com.abc.xyz" level="debug" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<root level="error">
  <appender-ref ref="Console"/>
</root>

在上述情况下,子程序包的调试级别低于父程序包。因此,当我运行我的应用程序时,我从包“ com.abc.xyz”中获取了调试级别的日志,而该应用程序的其余部分处于警告级别。但是,如果相反,请考虑情况2:

<logger name="com.abc" level="debug" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<logger name="com.abc.xyz" level="warn" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<root level="error">
  <appender-ref ref="Console"/>
</root>

在上述情况下,不遵循子程序包记录器级别,并且来自程序包“ com.abc”的所有日志均记录为调试级别。 是否可以使用任何配置来确保子程序包记录程序级别比父程序包级别具有更高的优先级?

1 个答案:

答案 0 :(得分:1)

为我工作。

重要的一点是子记录器必须具有additivity="false",但您没错。

您的问题肯定还有其他原因,这是其他原因导致的。您可能没有正确匹配记录器,或者配置超出显示部分,超出了显示的部分。