繁体   English   中英

如何使用 log4j2 忽略子类上的记录器?

[英]How can I ignore a logger on a subclass with log4j2?

例如,我从这里获取日志

org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260

但是当我设置时(我有很多只适用于不包括子类的类)

    <Logger name="org.hibernate.engine.spi.CascadingActions" additivity="false"/>
    <Logger name="org.hibernate.engine.spi.CascadingActions$6" additivity="false"/>

我仍然从CascadingActions$6获取日志,出于不明显的原因,我不能忽略org.hibernate.engine.spi

这是另一个不明显的问题吗? 或者是否有我忽略 log4j2 的子类的特定语法?

答案相对简单。 查看 CascadingActions 的源代码,您将看到

private static final CoreMessageLogger LOG = Logger.getMessageLogger(
        CoreMessageLogger.class,
        CascadingAction.class.getName()
);

记录器的名称是第二个参数。 注意它是“CascadingAction”,而不是 CascadingActions。 我不能告诉你这是故意的还是错字。

因此,您配置的 Logger 都不会匹配任何内容。 子类使用父类的 Logger,因此永远不会匹配。

底线是您不能总是假设记录器名称与 class 名称相同。 你需要检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM