如何跟踪H2内存数据库的SQL请求?

时间:2012-03-16 16:49:27

标签: h2 slf4j logback

如何跟踪H2内存中嵌入式数据库的SQL请求?

文档说跟踪文件与数据库文件位于同一目录中,但对于内存中嵌入式数据库,我没有数据库目录(在Windows下)。

我尝试使用

将跟踪重定向到使用slf4j / logback的给定文件
TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3

在数据库URL和以下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配置文件可以正常用于其他日志。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我不完全确定,但根据我的测试,似乎你删除了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

答案 1 :(得分:-1)

看起来最大跟踪级别是3,这就是您失败的原因