log4j 输出hibernate执行的sql语句

小胖9040 2016-10-10 05:34:21
如题 现在项目中使用log4j输出日志,但是并没有把项目执行的sql语句输出到日志文件中。网上也找了很多方法,但是都不完整或是跟我需要的功能完全没关系。求大神帮忙解答!
这是我的log4j.properties配置:
log4j.rootLogger=INFO,stdout,R,F

log4j.logger.com.slave=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../log4j/info.log
log4j.appender.R.DatePattern=yyyy-MM-dd
log4j.appender.R.Threshold = INFO
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

log4j.appender.F=org.apache.log4j.DailyRollingFileAppender
log4j.appender.F.File=../log4j/error.log
log4j.appender.F.DatePattern=yyyy-MM-dd
log4j.appender.F.Threshold = ERROR
log4j.appender.F.MaxFileSize=100MB
log4j.appender.F.MaxBackupIndex=10
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n
...全文
347 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
- 薰衣草。 2019-09-12
  • 打赏
  • 举报
回复
我得log4j.properties配置了 log4j.logger.org.hibernate = debug 为什么生成日志还不打印hibernate sql
小胖9040 2016-10-13
  • 打赏
  • 举报
回复
引用 2 楼 u013185616 的回复:
不好意思,刚刚试了下,那样似乎并不能输出SQL语句,刚刚查了下 Hibernate 在输出 SQL 时使用的 logger 名为 org.hibernate.SQL, 所以要配一下这个东西。 给你个完整点的案例吧,结合你的配置

log4j.rootLogger=INFO,stdout,R,F

log4j.logger.org.hibernate.SQL=DEBUG 
log4j.logger.com.slave=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../log4j/info.log
log4j.appender.R.DatePattern=yyyy-MM-dd
log4j.appender.R.Threshold = INFO
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

log4j.appender.F=org.apache.log4j.DailyRollingFileAppender
log4j.appender.F.File=../log4j/error.log
log4j.appender.F.DatePattern=yyyy-MM-dd
log4j.appender.F.Threshold = ERROR,DEBUG
log4j.appender.F.MaxFileSize=100MB
log4j.appender.F.MaxBackupIndex=10
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n
太感谢你了 大神 终于知道自己哪里错了
Swen程序员 2016-10-11
  • 打赏
  • 举报
回复
hibernateProperties中设置的控制台输出: hibernate.show_sql ;输出所有SQL语句到控制台。 hibernate.format_sql 在log和console中打印出更漂亮的SQL。
I,Frankenstein 2016-10-10
  • 打赏
  • 举报
回复
不好意思,刚刚试了下,那样似乎并不能输出SQL语句,刚刚查了下 Hibernate 在输出 SQL 时使用的 logger 名为 org.hibernate.SQL, 所以要配一下这个东西。 给你个完整点的案例吧,结合你的配置

log4j.rootLogger=INFO,stdout,R,F

log4j.logger.org.hibernate.SQL=DEBUG 
log4j.logger.com.slave=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../log4j/info.log
log4j.appender.R.DatePattern=yyyy-MM-dd
log4j.appender.R.Threshold = INFO
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

log4j.appender.F=org.apache.log4j.DailyRollingFileAppender
log4j.appender.F.File=../log4j/error.log
log4j.appender.F.DatePattern=yyyy-MM-dd
log4j.appender.F.Threshold = ERROR,DEBUG
log4j.appender.F.MaxFileSize=100MB
log4j.appender.F.MaxBackupIndex=10
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n
I,Frankenstein 2016-10-10
  • 打赏
  • 举报
回复
恩,这个其实不难,你应该知道在Hibernate的sessionFactory中的hibernateProperties里面有个配置,是否输出sql语句,如下:
<prop key="hibernate.show_sql">true</prop>
这里设置为true,控制台就可以输出所有项目中执行的sql语句。 然后再log4j的配置文件中配置某个包下面的输出级别, 比如:
log4j.logger.org.hibernate=ERROR
我把org.hibernate包下面的所有输出都定义成error, 然后你这个配置 log4j.appender.F=org.apache.log4j.DailyRollingFileAppender log4j.appender.F.File=../log4j/error.log log4j.appender.F.DatePattern=yyyy-MM-dd log4j.appender.F.Threshold = ERROR log4j.appender.F.MaxFileSize=100MB log4j.appender.F.MaxBackupIndex=10 log4j.appender.F.layout=org.apache.log4j.PatternLayout log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-[%p] [%l] %m%n 这个error.log里面就会看到所有Hibernate包下面的输出

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧