针对一个特定的JDBC错误调整hibernate日志记录级别

时间:2016-01-20 19:32:11

标签: java hibernate logging jdbc

环境:Hibernate 4.2.6

场景:hibernate记录特定"唯一约束PK_XXX违反的#ERROR" sql异常。 但是由于我们特定的多实例部署方案,我们需要将此调整为“INFO”级别,以便针对此特定的"唯一约束PK_XXX违反" sql异常。 (所以它不会混淆IT人员)。

换句话说,从技术上讲,它是" ERROR",但它是" INFO"从商业角度来看。

目前:

2016.01.19 13.20.14,299 [ ERROR ][ ][ ][ ] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - logExceptions() ORA-00001: unique constraint (PK_LOCKINFO) violated

渴望:

2016.01.19 13.20.14,299 [ INFO ][ ][ ][ ] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - logExceptions() ORA-00001: unique constraint (PK_LOCKINFO) violated

前进的最简单方法是什么?我能想到的选择:

  1. 修改hibernate内部类" org.hibernate.engine.jdbc.spi.SqlExceptionHelper" ,然后重新编译“hibernate”jar
  2. 具体的定制是:如果"违反了唯一约束PK_LOCKINFO" sql异常,将其记录为" INFO"等级而不是" ERROR"水平。但任何其他sql异常仍应记录为" ERROR"水平。 在我们前进的过程中,这一选择提出了挑战。每次hibernate升级时我们都必须这样做。

    1. 有一个课程要扩展&自定义hibernate类" org.hibernate.engine.jdbc.spi.SqlExceptionHelper"在我们自己的代码库中 这样我们就不必编译“hibernate”jar了。这可能吗?

    2. 在我们的代码中添加一个事后监听器,扫描" log"经常,然后做点什么

    3. 不确定我是否喜欢选项#3。似乎太尴尬了。

      还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

我们最终选择了#2选项:有一个类来扩展&自定义hibernate类" org.hibernate.engine.jdbc.spi.SqlExceptionHelper"