Java Hibernate不记录stacktrace

Java Hibernate不记录stacktrace,java,hibernate,logging,Java,Hibernate,Logging,我通过log4j配置了hibernate日志: 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: 13

我通过log4j配置了hibernate日志:

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()具有:

现在,在我为整个hibernate激活调试之后,它确实会打印stackTrace,但会记录大量垃圾。我只能记录stackTraces怎么办

将logger for package have class
SqlExceptionHelper
标记为调试可以解决问题,但不能确定是否会获得hibernate生成的所有错误日志


有什么帮助吗?

要查看堆栈跟踪,您需要使用

LOG.error(sqlException.getMessage(), sqlException); 
您可以扩展SqlExceptionHelper并重写logExceptions方法,以便它使用此行吗?

\log4j.rootLogger=@replaced.log4j.rootLogger@
    #log4j.rootLogger=@replaced.log4j.rootLogger@
log4j.appender.logfile.File=@replaced.log4j.appender.logfile@

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
#Pattern to output : date priority [category] - <message>line_separator
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.category.net.sf.acegisecurity=INFO
log4j.category.com.dc=DEBUG
log4j.category.org.apache.myfaces=INFO
log4j.category.javax.faces=INFO

# logs the SQL statements
#log4j.logger.org.hibernate.SQL=DEBUG

# Logs the JDBC parameters passed to a query
#log4j.logger.org.hibernate.type=TRACE
# Root logger option
log4j.rootLogger=INFO, stdout
log4j.appender.logfile.File=@replaced.log4j.appender.logfile@ log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.patternalyout log4j.appender.stdout.layout.ConversionPattern=%d%p[%c]-%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.MaxFileSize=512KB #保留三个备份文件 log4j.appender.logfile.MaxBackupIndex=3 log4j.appender.logfile.layout=org.apache.log4j.patternalyout #要输出的模式:日期优先级[类别]-行分隔符 log4j.appender.logfile.layout.ConversionPattern=%d%p[%c]-%n log4j.category.net.sf.acegisecurity=INFO log4j.category.com.dc=DEBUG log4j.category.org.apache.myfaces=INFO log4j.category.javax.faces=INFO #记录SQL语句 #log4j.logger.org.hibernate.SQL=DEBUG #记录传递给查询的JDBC参数 #log4j.logger.org.hibernate.type=TRACE #根记录器选项 log4j.rootLogger=INFO,标准输出
上面的log4j设置应该会有帮助,然后您只需要使用

error(e,e)//其中e是异常对象


希望这有助于

代码中的
LOG
是什么?SqlExceptionHelper是一个使用Basiclocker的hibernate类。
    #log4j.rootLogger=@replaced.log4j.rootLogger@
log4j.appender.logfile.File=@replaced.log4j.appender.logfile@

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
#Pattern to output : date priority [category] - <message>line_separator
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.category.net.sf.acegisecurity=INFO
log4j.category.com.dc=DEBUG
log4j.category.org.apache.myfaces=INFO
log4j.category.javax.faces=INFO

# logs the SQL statements
#log4j.logger.org.hibernate.SQL=DEBUG

# Logs the JDBC parameters passed to a query
#log4j.logger.org.hibernate.type=TRACE
# Root logger option
log4j.rootLogger=INFO, stdout