环境: hibernate 4.2.6
场景:hibernate 为特定的“违反唯一约束 PK_XXX”sql 异常记录“错误”。 然而,由于我们特定的多实例部署场景,我们需要针对这个特定的“违反唯一约束 PK_XXX”sql 异常将其调整为“INFO”级别。 (因此它不会混淆 IT 人员)。
换句话说,技术上它是“ERROR”,但从业务角度来看它是“INFO”。
目前:
2016.01.19 13.20.14,299 [ ERROR ][ ][ ][ ] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - logExceptions() ORA-00001:违反唯一约束 (PK_LOCKINFO)
期望:
2016.01.19 13.20.14,299 [ INFO ][ ][ ][ ] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - logExceptions() ORA-00001:违反唯一约束 (PK_LOCKINFO)
前进的最简单方法是什么?我能想到的选项:
- 修改hibernate内部类“org.hibernate.engine.jdbc.spi.SqlExceptionHelper”,然后重新编译“hibernate”jar
具体定制为:如果出现“违反唯一约束PK_LOCKINFO”的sql异常,记录为“INFO”级别,而不是“ERROR”级别。但任何其他 sql 异常仍应记录为“错误”级别。 在我们前进的过程中,这个选项提出了挑战。每次 hibernate 升级时我们都必须这样做。
在我们自己的代码库中有一个类来扩展和自定义 hibernate 类“org.hibernate.engine.jdbc.spi.SqlExceptionHelper” 这样我们就不必编译“hibernate ”jar。这可能吗?
在我们的代码中添加一个事后监听器,它不断地扫描“日志”,然后对此采取一些措施
不确定我是否喜欢选项 #3。显得太别扭了。
还有其他选择吗?
最佳答案
我们最终选择了选项 #2:有一个类来扩展和自定义 hibernate 类“org.hibernate.engine.jdbc.spi.SqlExceptionHelper”
关于java - 针对一个特定的 JDBC 错误调整 hibernate 日志记录级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34908886/