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

问题描述 投票:11回答:2

如何跟踪对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配置文件可正确用于其他日志。

任何想法?

h2 slf4j logback
2个回答
6
投票

我不确定,但是根据我的测试,如果您删除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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.