web-dev-qa-db-ja.com

play2のログに記録されたSQLステートメントはどこにありますか?

application.confにそのような構成があることがわかりました。

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

有効にしましたが、実行されたSQLをログに記録したログファイルが見つかりません。

どこで見つけることができますか、それとも何かが恋しいですか?

36
Freewind

1. application.conf

確認してください:

db.default.logStatements=true

この設定は、実際にはplay2で使用される接続プールであるbonecpの設定です。

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.bonecpbonecp用で、playapplicationは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(パラメーター値を含む)が表示されます。

57
Freewind

私の知る限り、これはPlay2.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>
5
Gabe Brown

以下をapplication.confに追加するだけです(play 2.2.1で機能します)

db.default.logStatements=true

logger.com.jolbox.bonecp=DEBUG
3
user3055282

HikariCP(つまり、Play 2.4以降)については、 https://github.com/brettwooldridge/HikariCP/wiki/JDBC-Logging を参照してください。

現時点では、HikariCPには本質的にJDBCロギングは含まれていません。これは意識的な決定であり、見落としや未開発の将来のロードマップ項目ではありません。ほぼすべての主要なデータベースには、独自にログを記録できるJDBCドライバーがあります。そうでない場合は、log4jdbc-log4j2が適切なオプションです。

このwikiページには、log4jdbc-log4j2だけでなく、一般的なデータベースのロギングを有効にする方法が記載されています。

Log4jdbc-log4j2の場合:"org.bgee.log4jdbc-log4j2" % "log4jdbc-log4j2-jdbc4.1" % "1.16"libraryDependenciesに追加します。構成については、 https://code.google.com/archive/p/log4jdbc-log4j2/ で説明されています。

1
Alexey Romanov