您可以使用拦截通过 JDBC 驱动程序的调用
log4jdbc
我已经在 Play 2.4 上成功使用了 JPA/hibernate 和 Hikary,设置应该相同,因为这会影响 JDBC 层。
将库添加到您的 build.sbt:
"org.bgee.log4jdbc-log4j2" % "log4jdbc-log4j2-jdbc4" % "1.12"
调整配置。添加log4jdbc,log4jdbc会自动从字符串中检测底层驱动:mysql。如果您使用的是不起眼的 JDBC 驱动程序,则可以使用配置选项对其进行配置 - 请参阅下面的文档。
db.default.url="jdbc:log4jdbc:mysql://localhost/......"
db.default.driver=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
我的 logback.xml 示例,相关部分:
<logger name="log4jdbc.log4j2" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</logger>
<logger name="jdbc.sqlonly" level="INFO" >
<appender-ref ref="DBFILE" />
</logger>
<appender name="DBFILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/sql.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
最后是 log4jdbc.log4j2.properties(在类路径上的 conf 目录中创建它):
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
更多文档:https ://code.google.com/p/log4jdbc-log4j2/
让我知道这是否适合您