2012-03-16 10 views
7

Jak mogę śledzić żądania SQL dla osadzonych baz danych H2 w pamięci?Jak śledzić żądania SQL dla baz danych H2 w pamięci?

Dokumentacja mówi, że plik śledzenia znajduje się w tym samym katalogu, co plik bazy danych, ale w przypadku wbudowanej bazy danych w pamięci nie mam katalogu bazy danych (w systemie Windows).

Próbowałem przekierować ślady do danego pliku z slf4j/logback za pomocą

TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3 

w adresie URL bazy danych i następujący plik logback.xml config ale bez powodzenia:

<configuration scan="true"> 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>mylogfile.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>%d{yyyyMMdd}_mylogfile.log</fileNamePattern> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%date{yyyyMMdd HH:mm:ss} %contextName[%thread] %level %logger{0} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <logger name="com.myapp" level="WARN"> 
    <appender-ref ref="FILE" /> 
    </logger> 

    <logger name="h2database" level="TRACE"> 
    <appender-ref ref="FILE" /> 
    </logger> --> 

    <root level="WARN"> 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

Mój plik konfiguracyjny logback działa poprawnie dla innych dzienników.

Każdy pomysł?

+0

Zobacz również http://stackoverflow.com/questions/6124886/h2-and-query-logging – Vadzim

Odpowiedz

2

Nie jestem do końca pewien, ale według mojego testu wydaje się, że jeśli usuniesz TRACE_LEVEL_SYSTEM_OUT=3, to zadziała. Czy możesz spróbować? Przykład URL bazy danych:

jdbc:h2:mem:test;TRACE_LEVEL_FIle=4 

zamiast

jdbc:h2:mem:test;TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3 
+0

Dziękuję. Udało mi się sprawić, by działało poprawnie z testem jednostkowym. Problem wydaje się pochodzić z aplikacji, z której korzystam, która łączy się bezpośrednio z bazą danych i jej konfiguracją logowania (przy użyciu rejestru commons), która powoduje, że dzienniki są zawsze przekierowywane do konsoli, a nie do pliku dziennika, jak chcę. – user1274500