Где посмотреть записанные операторы sql в play2? - PullRequest
36 голосов
/ 21 февраля 2012

Я обнаружил, что такая конфигурация есть в application.conf:

# If enabled, log SQL statements being executed.
db.default.logStatements=true

Я включил его, но не могу найти ни одного файла журнала, в котором регистрируются выполненные sqls.

Где я могу его найти или я что-то пропустил?

Ответы [ 4 ]

57 голосов
/ 09 марта 2012

1. application.conf

убедитесь:

db.default.logStatements=true

Этот конфиг на самом деле является настройкой bonecp, который является пулом соединений, используемым в play2

2. настраиваемый регистратор

Добавить пользовательскую конфигурацию логгера в conf/logger.xml.

Содержание может быть:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-5level - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.jolbox.bonecp" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="play" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="application" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

</configuration>

com.jlbox.bonecp для bonecp, а play и application для play2.

3. отключить настройки логгера в application.conf

Прокомментируйте настройки логгера в application.conf:

# Logger
# ~~~~~
# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .

# Root logger:
# logger.root=ERROR

# Logger used by the framework:
# logger.play=INFO

# Logger provided to your application:
# logger.application=DEBUG

Перезапустите воспроизведение, и вы увидите все выполненные SQL (включая значения параметров).

5 голосов
/ 11 августа 2015

Это больше не работает в Play 2.4.2 из того, что я могу сказать.Механизм пула соединений по умолчанию был изменен на HikariCP.

Добавьте это в ваш application.conf и следуйте инструкциям ниже.Все должно работать:

Application.conf

db.default.pool = "bonecp"
db.default.bonecp.logStatements=true

conf / logger.xml Добавить пользовательскую конфигурацию регистратора в conf / logger.xml.

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-5level - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.jolbox.bonecp" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="play" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="application" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

</configuration>
3 голосов
/ 26 февраля 2014

Просто добавьте следующее в application.conf (работает для меня в игре 2.2.1)

db.default.logStatements=true

logger.com.jolbox.bonecp=DEBUG
1 голос
/ 11 апреля 2016

Для HikariCP (то есть начиная с Play 2.4) см. https://github.com/brettwooldridge/HikariCP/wiki/JDBC-Logging:

В настоящее время HikariCP по своей сути не включает ведение журнала JDBC. Это сознательное решение, а не недосмотр или неосуществленный будущий элемент дорожной карты. Почти все основные базы данных имеют драйвер JDBC, способный самостоятельно регистрироваться. Для тех, кто этого не делает, хороший вариант - log4jdbc-log4j2.

На этой вики-странице описано, как включить ведение журнала для общих баз данных, а также log4jdbc-log4j2.

Для log4jdbc-log4j2: добавить "org.bgee.log4jdbc-log4j2" % "log4jdbc-log4j2-jdbc4.1" % "1.16" к libraryDependencies; конфигурация описана в https://code.google.com/archive/p/log4jdbc-log4j2/.

...