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

标签 java hibernate logging jdbc

环境: 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)

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

  1. 修改hibernate内部类“org.hibernate.engine.jdbc.spi.SqlExceptionHelper”,然后重新编译“hibernate”jar

具体定制为:如果出现“违反唯一约束PK_LOCKINFO”的sql异常,记录为“INFO”级别,而不是“ERROR”级别。但任何其他 sql 异常仍应记录为“错误”级别。 在我们前进的过程中,这个选项提出了挑战。每次 hibernate 升级时我们都必须这样做。

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

  2. 在我们的代码中添加一个事后监听器,它不断地扫描“日志”,然后对此采取一些措施

不确定我是否喜欢选项 #3。显得太别扭了。

还有其他选择吗?

最佳答案

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

关于java - 针对一个特定的 JDBC 错误调整 hibernate 日志记录级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34908886/

相关文章:

java.lang.UnsatisfiedLinkError : Couldn't load STLport_shared: findLibrary returned null (tess-two) 错误

java - 带两个参数的 Hibernate IN 查询

GoLang 将 STDOUT 和 STDERR 写入 log15 文件

java - 我不明白为什么 Hibernate 创建一个带有两个连接的查询

java - 如何以编程方式将映射资源添加到 hibernate 配置以创建 session 工厂?

java - swingWorker调用的synchronized方法被中断?

Spring Integration 日志记录错误 channel (slf4j + logback)

java - 使用Spring集成测试时如何控制@PostConstruct

java - JSP中arraylist.get(int i)方法的问题

java - 无法解码流: java. io.FileNotFoundException :/drawable/fa_diesis. png:打开失败:ENOENT(没有这样的文件或目录)