如何在Hibernate日志中显示SQL参数? [英] How to show SQL parameters in Hibernate log?
问题描述
在我的hibernate.cfg.xml中,我有以下内容:
In my hibernate.cfg.xml, I have the following:
<property name="show_sql">true</property>
在我的log4j.xml中,我有以下内容:
In my log4j.xml, I have the following:
<logger name="org.hibernate" additivity="false">
<level value="TRACE"/>
<appender-ref ref="hbn_log"/>
</logger>
<category name="org.hibernate.SQL" additivity="false">
<priority value="TRACE"/>
<appender-ref ref="hbn_log"/>
</category>
<category name="org.hibernate.type" additivity="false">
<priority value="TRACE"/>
<appender-ref ref="hbn_log"/>
</category>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder">
<level value="TRACE"/>
<appender-ref ref="hbn_log"/>
</logger>
<logger name="org.hibernate.event.def.DefaultLoadEventListener" additivity="true">
<level value="all"/>
<appender-ref ref="hbn_log"/>
</logger>
<logger name="org.hibernate.cache.ReadWriteCache" additivity="true">
<level value="all"/>
<appender-ref ref="hbn_log"/>
</logger>
<appender name="hbn_log" class="com.adventnet.management.log.NMSRollingFileAppender">
<param name="File" value="logs/hbn.txt"/>
<param name="MaxFileSize" value="1MB"/>
<param name="MaxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd MMM yyyy HH:mm:ss:SSS}] %-5c{2}: %m%n"/>
</layout>
<param name="Threshold" value="TRACE"/>
</appender>
在我的stdout.txt中,我可以看到它记录了SQL语句:
In my stdout.txt, I can see that it logs the SQL statement:
[13 Apr 2013 22:03:59:199] SYS_OUT: Hibernate: select this_.EMSID as EMSID195_0_, this_.COUNTER as COUNTER195_0_, this_.TIMESTAMP as TIMESTAMP195_0_, this_.UPDATETYPE as UPDATETYPE195_0_, this_.OBJECTTYPE as OBJECTTYPE195_0_, this_.OBJECTID as OBJECTID195_0_, this_.OBJECT as OBJECT195_0_ from WebNmsDB.UpdateData this_ where this_.EMSID=?
但我希望它也记录SQL的参数,并且不会显示它。
But I want it to also log the parameter for the SQL, and it's not showing it.
另一件事是,appender被定义为记录到hbn.txt,但是SQL语句被记录到stdout.txt而不是hbn.txt。
Another thing is that the appender is defined to log to hbn.txt, but the SQL statement gets logged to stdout.txt and not hbn.txt. I don't know why that's happening.
推荐答案
在log4j.xml中追加这个配置
Append this config on your log4j.xml
<logger name="org.hibernate.type.descriptor.sql.BasicBinder">
<level value="TRACE"/>
</logger>
不要忘记检查您的appender的Threadhold级别。
Don't forgot to check your appender's Threadhold level.
这篇关于如何在Hibernate日志中显示SQL参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!