不同日志级别的可加性为false,使用哪个日志级别?

时间:2019-06-14 16:23:04

标签: java logging log4j log4j2 log-level

请考虑以下代码段:

   <AsyncLogger name="com.example.Section" level="WARN" additivity="false">
        <AppenderRef ref="Logger1" />

   </AsyncLogger>

     <AsyncLogger name="com.example.Section2" level="INFO"/>

    <AsyncRoot level="ALL">
        <AppenderRef ref="Logger1" />
    </AsyncRoot>

我是否正确假设第1节将以警告级别记录。而在所有级别的Section2(不是信息)?

更新:我的意思是第1节的警告级别或更高。

1 个答案:

答案 0 :(得分:0)

不,那是不正确的。

发送到“ com.example.Section”记录器的任何级别为WARN或更具体(ERRORFATAL)的事件将被该记录器接受,并且发送给其附加程序。由于此记录器的可加性为false,因此事件不会发送到其祖先的任何追加者。

发送到记录器“ com.example.Section2”的任何级别为INFO或更高级别(WARNERRORFATAL)的事件都将被接受由该记录器发送给其附加程序。由于默认情况下,可加性为true,因此该记录器接受的事件也将进入其祖先的附加器,而后者只会是根记录器的附加器。

由于日志记录级别设置为ALL,因此无论日志记录级别如何,进入根记录程序的任何事件都将被接受并发送到其附加程序。由于这是根记录器的可加性,所以该记录器没有祖先。

log4j2手册包含additivity的示例和说明,也可以帮助您理解这一点。关于堆栈可加性,还有其他一些问题可能也有帮助。