如何使用slf4j设置静默单个特定日志行

时间:2016-05-10 10:35:40

标签: java log4j slf4j log4j2

运行mvn测试时,我得到以下日志行。我不想采取任何行动,因为它只是在H2数据库上运行测试。

WARN  org.hibernate.orm.connections - HHH10001002: Using Hibernate built-in connection pool (not for production use!)

我可以把以下内容放在整个包中的日志中。

  <Logger name="org.hibernate.orm.connections" level="fatal"/>

但我希望整个班级或整个套餐保持沉默。我只需要跳过打印特定的日志行。如何配置我的log4j2.xml文件?

1 个答案:

答案 0 :(得分:0)

正如Fildor建议你最好的选择是使用RegExFilter。我会关键HHH10001002。但我只会在org.hibernate.orm.connections Logger下执行此操作。

<Logger name="org.hibernate.orm.connections" level="WARN">
   <RegExFilter regex="^HHH10001002: .*" onMatch="DENY" onMisMatch="NEUTRAL"/>
</Logger>

这只会使用该软件包下的Logger过滤消息,因此过滤的开销不会对您的应用程序造成太大影响。它将使处于WARN,ERROR或FATAL的消息与该模式不匹配,并且它们将通过其父配置的记录器(或根)进行路由到appender。

(编辑2016年5月11日):谷歌搜索后我相信消息的文本实际上是从HHH1001002开始的:所以我编辑了上面的正则表达式来匹配。我不确定记录器名称是否正确。您应该检查并查看%c是否在PatternLayout的模式中。如果不是,您可能需要添加它以确定要使用的实际记录器名称。