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

use*_*500 11 h2 logback slf4j

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

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

我尝试使用slf4j/logback将跟踪重定向到给定文件

TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3
Run Code Online (Sandbox Code Playgroud)

在数据库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>
Run Code Online (Sandbox Code Playgroud)

我的logback配置文件可以正常用于其他日志.

任何的想法?

Tho*_*ler 6

我不完全确定,但根据我的测试,似乎你删除TRACE_LEVEL_SYSTEM_OUT=3然后它会工作.你能试试吗?示例数据库URL:

jdbc:h2:mem:test;TRACE_LEVEL_FIle=4
Run Code Online (Sandbox Code Playgroud)

代替

jdbc:h2:mem:test;TRACE_LEVEL_FIle=4;TRACE_LEVEL_SYSTEM_OUT=3
Run Code Online (Sandbox Code Playgroud)