Java Hibernate不记录stacktrace
我通过log4j配置了hibernate日志: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.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 classSqlExceptionHelper
标记为调试可以解决问题,但不能确定是否会获得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