Как отследить запросы SQL для баз данных H2 в памяти? - PullRequest
9 голосов
/ 16 марта 2012

Как я могу отслеживать запросы SQL для встроенных баз данных H2 в памяти?

В документации говорится, что файл трассировки находится в том же каталоге, что и файл базы данных, но для встроенной базы данных в памяти у меня нет каталога базы данных (под 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 корректно работает для других журналов.

Есть идеи?

1 Ответ

5 голосов
/ 17 марта 2012

Я не совсем уверен, но согласно моему тесту кажется, что если вы удалите 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
...