2013-03-15 27 views
8

Trong hibernate.cfg.xml của tôi, tôi đã điều sau đây:Làm thế nào để hiển thị các tham số SQL trong nhật ký Hibernate?

<property name="show_sql">true</property> 

Trong log4j.xml của tôi, tôi đã điều sau đây:

<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> 

Trong stdout.txt của tôi, tôi có thể thấy rằng nó ghi lại câu lệnh SQL:

[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=? 

Nhưng tôi muốn nó cũng ghi nhật ký tham số cho SQL và nó không hiển thị nó.

Một điều khác là ứng dụng được định nghĩa để đăng nhập vào hbn.txt, nhưng câu lệnh SQL được ghi vào stdout.txt chứ không phải hbn.txt. Tôi không biết tại sao điều đó lại xảy ra.

Trả lời

11

Nối cấu hình này trên log4j.xml bạn

<logger name="org.hibernate.type.descriptor.sql.BasicBinder"> 
    <level value="TRACE"/> 
</logger> 

Đừng quên kiểm tra mức Threadhold của appender của bạn.

+0

Tôi đã thêm rằng vào log4j.xml của mình và vẫn không nhận được bất kỳ thông số ghi nhật ký nào. – pacoverflow

+0

Tôi cũng đã thêm vào appender và nó vẫn không hoạt động. – pacoverflow

+0

này hoạt động hoàn hảo cho tôi: \t \t \t –

Các vấn đề liên quan