在play2中的何处查看记录的sql语句?

在play2中的何处查看记录的sql语句?,sql,logging,playframework-2.0,anorm,Sql,Logging,Playframework 2.0,Anorm,我发现在application.conf中有这样的配置: # If enabled, log SQL statements being executed. db.default.logStatements=true # Logger # ~~~~~ # You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory . # Root lo

我发现在
application.conf
中有这样的配置:

# If enabled, log SQL statements being executed.
db.default.logStatements=true
# 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的日志文件

我在哪里可以找到它,或者我错过了什么。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>

重新启动play,您将看到所有已执行的SQL(包括参数值)。

只需将以下内容添加到application.conf(在play 2.2.1中适用)


据我所知,这在游戏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>

%-5级-%msg%n
有关HikariCP(即从播放2.4开始),请参阅:

HikariCP目前并不固有地包括JDBC日志记录。这是一个有意识的决定,而不是一个疏忽或未开发的未来路线图项目。几乎所有主要的数据库都有一个JDBC驱动程序,能够自己进行日志记录。对于那些不这样做的人,log4jdbc-log4j2是一个很好的选择

这个wiki页面记录了如何为公共数据库以及log4jdbc-log4j2启用日志记录


对于log4jdbc-log4j2:将
org.bgee.log4jdbc-log4j2“%”log4jdbc-log4j2-jdbc4.1“%”1.16“
添加到
库依赖项中;配置如所述。

这在2.3版scala中似乎不起作用,而@Freewind给出的解决方案在2.3.4版中效果很好。这在2.4.2版中似乎不起作用。他们把阿诺姆从核心区拉了出来,所以我猜还有别的事情发生。
db.default.logSql=true
似乎在播放2.5.3时起作用。这会将池更改回BoneCP。有没有办法通过HikariCP获取日志记录?(我正在使用Play 2.4.3)@PatrikBeck:我对HikariCP的包尝试了类似的方法,
,我确实得到了
c.z.h.p.HikariPool
调试消息,但没有得到实际的SQL语句。也许HikariCP不支持这一点另请参阅。现在,我只是在做这件事:在调试一些Anorm/SQL问题时使用BoneCP(具有上述设置),并在调试完成时切换回默认值。我能够在保持Hikary的同时启用日志记录,使用log4jdbc。它包装JDBC驱动程序并记录SQL语句。@PatrikBeck:确切地说,你能给出一个答案吗?您是否需要像中那样修改存储库代码?Play和Scala对版本非常敏感——在所有问题中添加版本号将帮助Play/Scala领域的新来者了解(永远)不适用于他们的特定于版本的建议。
<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>