在hibernate配置中,我提到了show_sql = true。
在日志中,我可以看到查询正在打印,这是由hibernate执行的。
如下所示
Hibernate : <insert query>
Hibernate : <select query>
我想打印当前时间戳以及查询。喜欢
<current time > Hibernate : <insert query>
<current time > Hibernate : <select query>
我正在使用Hibernate 4。
我使用过hibernate.generate_statistics=true
,但这没有给插入时间。而且,我只需要当前的时间。
答案 0 :(得分:0)
Hibernate维护有关查询对象的统计信息,以及
的频率- 在配置文件中启用统计信息
• hibernate.generate_statistics=true
Hibernate接口
- 全球信息统计
- 有关对象类型
的信息的EntityStatistics- SQL和HQL查询的QueryStatistics
我认为您需要记录时间戳而不是统计信息,但您可以根据自己的要求使用以下任何选项。
您可以使用log4jdbc JDBC代理驱动程序来记录SQL和其他有趣的信息。
您可以在类路径中使用slf4j-api.jar以及首选绑定的jar文件 - slf4j-log4j12.jar
要使用Log4j,您还需要在类路径中放置log4j.properties文件。一个示例属性文件与siber /目录中的Hibernate一起分发。
休眠日志类别
org.hibernate.SQL - 记录执行时的所有SQL DML语句
org.hibernate.type - 记录所有JDBC参数
org.hibernate.tool.hbm2ddl - 记录执行时的所有SQL DDL语句
org.hibernate.pretty - 在刷新时记录与会话关联的所有实体(最多20个实体)的状态
org.hibernate - 记录所有内容。这是很多信息,但它对故障排除很有用
使用Hibernate,您几乎应该始终使用针对org.hibernate.SQL类别启用的调试,或者,启用hibernate.show_sql属性
<attribute name="ShowSqlEnabled">true</attribute>
EntityStatistics entityStats =
stats.getEntityStatistics( Cat.class.getName() );
long changes =
entityStats.getInsertCount()
+ entityStats.getUpdateCount()
+ entityStats.getDeleteCount();
log.info(Cat.class.getName() + " changed " + changes + "times" );
` 请查看Hibernate Documentation以获取更多详细信息。
答案 1 :(得分:0)
show_sql=true
选项仅设置写入系统控制台,它不是真正的记录器,因此您无法对其进行配置。如果你想从Hibernate获得有意义的日志记录,你应该配置一个日志框架,并使用它来控制Hibernate的日志记录。
我已经使用了以下日志框架,所以我可以告诉你,这些框架适用于Hibernate: log4j , slf4j , logback , log4j2 。
例如,log4j.properties
文件中的这一行配置 log4j 以保留相同的信息,该信息与show_sql=true
一起显示:
log4j.category.org.hibernate.SQL=DEBUG
但在这种情况下,可以配置输出。就我而言,格式在console
appender:
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %F:%L - %m%n
这样,输出为:
<current time> DEBUG SqlStatementLogger.java:104 - <insert query>
log4j.properties
文件为了完整起见,我已经包含了我的配置文件:
# root logger
log4j.rootLogger = INFO, stdout
# category filters
log4j.category.org.hibernate.SQL=TRACE
# appenders
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %F:%L - %m%n