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