You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Hibernate中HHH90000014特定弃用日志而非全部警告?

如何仅禁用Hibernate中特定的HHH90000014弃用警告

当然可行!你完全不需要禁用整个org.hibernate.orm.deprecation日志器的输出,只需要精准过滤掉包含HHH90000014的那条特定警告就行。具体实现取决于你项目使用的日志框架,下面是两种最常用框架的配置方案:

Logback 配置方式

Logback支持通过自定义过滤器匹配日志内容并拦截。你需要在logback.xml(或Spring项目的logback-spring.xml)中,给org.hibernate.orm.deprecation日志器添加如下过滤规则:

<logger name="org.hibernate.orm.deprecation" level="WARN">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator>
            <!-- 检查日志消息是否包含目标错误码 -->
            <expression>return message.contains("HHH90000014");</expression>
        </evaluator>
        <OnMismatch>NEUTRAL</OnMismatch> <!-- 不匹配的日志正常处理 -->
        <OnMatch>DENY</OnMatch> <!-- 匹配到的日志直接拒绝输出 -->
    </filter>
</logger>

注意:Logback的表达式求值依赖Janino库,如果你的项目里还没引入,Maven可以添加以下依赖:

<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>3.1.9</version> <!-- 建议使用最新稳定版本 -->
</dependency>

Log4j2 配置方式

Log4j2提供了RegexFilter可以快速匹配特定内容,在log4j2.xml中配置如下:

<Logger name="org.hibernate.orm.deprecation" level="WARN">
    <Filters>
        <!-- 匹配包含HHH90000014的日志,匹配到则拦截 -->
        <RegexFilter regex=".*HHH90000014.*" onMatch="DENY" onMismatch="NEUTRAL"/>
    </Filters>
</Logger>

如果你需要更精准的匹配逻辑,也可以使用ScriptFilter编写自定义脚本判断,但大多数情况下RegexFilter就足够满足需求了。

其他日志框架的通用思路

如果你用的是其他日志框架,核心逻辑都是一致的:找到目标日志器(org.hibernate.orm.deprecation),添加一个内容过滤器,仅拦截包含HHH90000014的日志条目,其余日志正常输出。

内容的提问来源于stack exchange,提问作者Krzysztof Krasoń

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:41:19