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