【发布时间】:2014-11-01 13:03:36
【问题描述】:
我通过 log4j 配置了休眠日志:
log4j.logger.org.hibernate=INFO
如果出现错误,我只会收到异常消息而不是完整的堆栈跟踪:
[APPNAME] 2014-09-08 15:44:40,487 ERROR [http-bio-808-exec-3] SqlExceptionHelper.logExceptions(146) | ERROR: column user0_.nationality does not exist
Position: 1365
因为 SqlExceptionHelper.logExceptions() 有:
public void logExceptions(SQLException sqlException, String message) {
if ( LOG.isEnabled( Level.ERROR ) ) {
if ( LOG.isDebugEnabled() ) {
message = StringHelper.isNotEmpty( message ) ? message : DEFAULT_EXCEPTION_MSG;
LOG.debug( message, sqlException );
}
final boolean warnEnabled = LOG.isEnabled( Level.WARN );
while ( sqlException != null ) {
if ( warnEnabled ) {
LOG.warn( "SQL Error: " + sqlException.getErrorCode() + ", SQLState: " + sqlException.getSQLState() );
}
LOG.error( sqlException.getMessage() );
sqlException = sqlException.getNextException();
}
}
}
现在,在我为整个休眠状态激活 DEBUG 后,它确实会打印 stackTrace,但会记录很多垃圾。我可以做些什么来只记录 stackTraces?
标记记录器的包有SqlExceptionHelper 到 DEBUG 的类可以解决问题,但我不确定我会得到所有的休眠错误日志。
有什么帮助吗?
【问题讨论】:
-
您的代码中的
LOG是什么? -
SqlExceptionHelper 是一个使用 BasicLogger 的休眠类。