2012-12-28 70 views
5

有沒有人有如何使用log4j2登錄hibernate sql參數的例子?我知道如何使用log4j 1.x記錄它們,但是我無法使用log4j的2.0 beta 3版本(迄今爲止的最新版本)來做到這一點。Log4j2日誌休眠參數綁定

謝謝。

回答

4

我已經看到其他回答這個問題,但沒有記錄只是SQL替代參數。如果你設置了org.hibernate.type記錄器類別,你將得到一個TON輸出!

我想看到的是替代值。如果這是你想要的好東西,繼續讀下去......

總之你要配置的記錄器類別被稱爲:

org.hibernate.type.descriptor.sql.BasicBinder 

而且你需要將它的值設置爲TRACE

那說,下面是.properties風格和XML配置,使這項工作。

.properties風格:

log4j.rootLogger=INFO, Console 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n 
# Below is the line to dump ONLY the bind variables 
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 

XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="Console" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value="DEBUG" /> 
    <appender-ref ref="Console" /> 
    </root> 

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

</log4j:configuration> 

的輸出如下:

10:58:47,631 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] (Thread-5212 (HornetQ-client-global-threads-475186579)) binding parameter [1] as [BIGINT] - 165 
10:58:47,631 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] (Thread-5212 (HornetQ-client-global-threads-475186579)) binding parameter [2] as [BIGINT] - 1390496100822 

玩得開心!