2012-03-16 41 views
7

如何跟蹤H2內存嵌入式數據庫的SQL請求?如何跟蹤H2內存數據庫的SQL請求?

該文檔說跟蹤文件位於與數據庫文件相同的目錄中,但對於內存中的嵌入式數據庫,我沒有數據庫目錄(在Windows下)。

我嘗試用

TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3 
數據庫URL

重定向痕跡與SLF4J /的logback給定的文件及以下logback.xml配置文件,但沒有運氣:

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

我的logback配置文件對其他日誌正常工作。

有什麼想法?

+0

參見http://stackoverflow.com/questions/6124886/h2-and-query-logging – Vadzim 2017-01-20 12:28:23

回答

2

我不完全確定,但根據我的測試,似乎如果您刪除TRACE_LEVEL_SYSTEM_OUT=3那麼它會工作。你可以試試嗎?例如數據庫URL:中

jdbc:h2:mem:test;TRACE_LEVEL_FIle=4 

代替

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

謝謝。我設法使用單元測試正確地工作。這個問題似乎來自我正在使用的應用程序,它直接連接到數據庫及其日誌配置(使用公共日誌記錄),使得日誌始終被重定向到控制檯,而不是我想要的日誌文件。 – user1274500 2012-03-21 09:50:14