[英]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.