Playframework 如何使用log4jdbc记录SQL?

Playframework 如何使用log4jdbc记录SQL?,playframework,playframework-2.0,logback,log4jdbc,Playframework,Playframework 2.0,Logback,Log4jdbc,在一个2.0 Playframework项目中,我想通过分析发出的SQL查询。我正在使用log4jdbc,但是我无法让它工作 我在lib/文件夹中添加了log4jdbc.jar文件,并将我的application.conf文件更改为以下文件: db.default.driver=net.sf.log4jdbc.DriverSpy db.default.url="jdbc:log4jdbc:mysql://127.0.0.1:3306/mydatabase" db.default.user="us

在一个2.0 Playframework项目中,我想通过分析发出的SQL查询。我正在使用log4jdbc,但是我无法让它工作

我在
lib/
文件夹中添加了
log4jdbc.jar
文件,并将我的application.conf文件更改为以下文件:

db.default.driver=net.sf.log4jdbc.DriverSpy
db.default.url="jdbc:log4jdbc:mysql://127.0.0.1:3306/mydatabase"
db.default.user="username"
db.default.pass="password"
这会导致
无法连接到数据库[默认值]
错误。没有log4jdbc,一切正常。我错过什么了吗

Ps:一个重要的通知,我也在使用play slick扩展,这似乎是问题的根源


编辑:通过更深一点的搜索,确切的错误是“找不到合适的驱动程序”

显然Play DB插件并不阻止使用这种url。如果查看模块播放jdbc第345行中的DB.scala,它只会将url传递给jdbc

conf.getString("url") match {
  case Some(PostgresFullUrl(username, password, host, dbname)) =>
    datasource.setJdbcUrl("jdbc:postgresql://%s/%s".format(host, dbname))
    datasource.setUsername(username)
    datasource.setPassword(password)
  case Some(url @ MysqlFullUrl(username, password, host, dbname)) =>
    val defaultProperties = """?useUnicode=yes&characterEncoding=UTF-8&connectionCollation=utf8_general_ci"""
    val addDefaultPropertiesIfNeeded = MysqlCustomProperties.findFirstMatchIn(url).map(_ => "").getOrElse(defaultProperties)
    datasource.setJdbcUrl("jdbc:mysql://%s/%s".format(host, dbname + addDefaultPropertiesIfNeeded))
    datasource.setUsername(username)
    datasource.setPassword(password)
  case Some(url @ H2DefaultUrl()) if !url.contains("DB_CLOSE_DELAY") =>
    if (Play.maybeApplication.exists(_.mode == Mode.Dev)) {
      datasource.setJdbcUrl(url + ";DB_CLOSE_DELAY=-1")
    } else {
      datasource.setJdbcUrl(url)
    }
  case Some(s: String) =>
    datasource.setJdbcUrl(s)
  case _ =>
    throw conf.globalError("Missing url configuration for database [%s]".format(conf))
}

因此pb可能位于数据源本身(BoneCP)

您是否尝试在application.conf中设置
db.default.logStatements=true
?可能只是Anorm支持它?

您是否尝试过使用
logger.com.jolbox.bonecp=DEBUG
和/或
logger.scala.slick=DEBUG
?这通常已经足够多的日志记录了,只是似乎无法进行一些事务日志记录


哦,您需要设置
db.default.logStatements=true
,以便bonecp日志记录工作

显然PlayDB插件并不阻止使用这种url。如果您查看模块播放jdbc第345行中的DB.scala,它只是将url传递给jdbc。我不使用
anrom
,而是使用Typesafe的另一个库
slick
。您的方法是正确的。看来问题出在耍花招。我要再挖一点。这确实是我决定使用的退路。