令人讨厌的是,Hibernate在某些情况下似乎喜欢将日志写入log4j本身。我不想要它。我想在出现问题时抛出异常,就像一个好的库一样。
有谁知道这是否可行,更重要的是,我该怎么做?
例如,我收到此ERROR级别日志“尝试获取锁定时发现死锁;尝试重新启动事务”。如果它至少包含一个堆栈跟踪,或者可能是导致该死锁的查询,那就不会那么糟糕了。但事实并非如此,因此很难调试其中一些案例。
我查看了hibernate映射dtd文件,hibernate配置xml文件和hibernate配置dtd文件,但没有任何内容可以作为控制日志记录的方法。
我在log4j.properties文件中看到以下几行:
# Don't log Hibernate flushing exceptions (usually StaleStateExceptions)
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=FATAL
log4j.logger.org.hibernate.jdbc.AbstractBatcher=FATAL
如果我将某些内容标记为“致命”,那么hibernate会抛出异常吗?
我在Hibernate沼泽中有点失落,所以我很欣赏一些方向。作为背景,我已经在hibernate工作了2年,但我绝不是它的专家。
答案 0 :(得分:0)
我们发现hibernate实际上会抛出异常,但它也日志。我们设置log4j使得hibernate不会像我在我的问题中写的那样记录特定类的异常:
# Don't log Hibernate flushing exceptions (usually StaleStateExceptions)
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=FATAL