Playframework 如何使用log4jdbc记录SQL?
在一个2.0 Playframework项目中,我想通过分析发出的SQL查询。我正在使用log4jdbc,但是我无法让它工作 我在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
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
。您的方法是正确的。看来问题出在耍花招。我要再挖一点。这确实是我决定使用的退路。