在 Log4j2 中,如何避免记录包含特定文本的消息?

Mar*_*rcG 3 logging log4j2

如何根据消息内容过滤掉Log4j2消息?

例如,我不想记录包含文本的 Hibernate 消息:HHH90000022: Hibernate's legacy org.hibernate.Criteria API is deprecated; use the JPA javax.persistence.criteria.CriteriaQuery instead。当然,我可以禁用所有 Hibernate 弃用警告,如下所示:

<Logger name="org.hibernate.orm.deprecation" additivity="false" level="ERROR">
    …
</Logger>
Run Code Online (Sandbox Code Playgroud)

但是我根本不会收到弃用警告,而且它们通常很有用。我只想删除那个(因为我无法修复它,而且它们是由成千上万的人发布的)。请注意,这是一个 Log4j2 问题,而不是一个 Hibernate 问题。

Mar*_*rcG 5

哎呀,看来我自己回答了,我不知道我是怎么错过的RegexFilter

<Logger name="org.hibernate.orm.deprecation" additivity="false" level="WARN">
    <RegexFilter regex=".*HHH90000022.*" onMatch="DENY" onMismatch="NEUTRAL"/>
    …
</Logger>
Run Code Online (Sandbox Code Playgroud)