-1

请考虑以下片段:

   <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>

我是否正确假设 Section1 将以警告级别记录。以及所有级别的第 2 节(不是信息)?

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

4

1 回答 1

0

不,这是不正确的。

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

发送到记录器“com.example.Section2”的任何级别INFO或更具体的 ( WARN, ERROR, FATAL) 事件将被该记录器接受并发送到其附加程序。由于可加性是true默认情况下,此记录器接受的事件也将转到其祖先的附加器,这将只是根记录器的附加器。

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

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

于 2019-06-15T05:47:26.027 回答