重头戏2.4-在日志中显示Ebens SQL语句

重头戏2.4-在日志中显示Ebens SQL语句,sql,logging,playframework,ebean,playframework-2.4,Sql,Logging,Playframework,Ebean,Playframework 2.4,如何在日志中显示SQL语句?我正在使用EBeans,由于某些原因,它无法插入,但我看不出问题出在哪里 我试图将我的配置编辑为: db.default.logStatements=true 并将其添加到logback.xml <logger name="com.jolbox" level="DEBUG" /> 下面是我在网上找到的一些答案,但它似乎不适用于2.4…日志记录已随播放2.4而改变。从现在开始,要在控制台中显示SQL语句,只需在conf/logback.xml文件中添

如何在日志中显示SQL语句?我正在使用EBeans,由于某些原因,它无法插入,但我看不出问题出在哪里

我试图将我的配置编辑为:

db.default.logStatements=true
并将其添加到logback.xml

<logger name="com.jolbox" level="DEBUG" />


下面是我在网上找到的一些答案,但它似乎不适用于2.4…

日志记录已随播放2.4而改变。从现在开始,要在控制台中显示SQL语句,只需在conf/logback.xml文件中添加以下行:

<logger name="org.avaje.ebean.SQL" level="TRACE" />

它应该很好用

正如@Flo354在评论中指出的那样,在播放2.6时,您应该使用:

<logger name="io.bean" level="TRACE" />

仅供参考,Ebean上有一个很好的视频教程,介绍了如何仅为代码的选定区域捕获SQL语句

因此,在开发和/或使用记录的语句执行测试时,只能在有问题的地方记录语句

简而言之:像往常一样,将最新的依赖项添加到您的
builded.sbt
,以便以后您可以在代码中使用它,如:

LoggedSql.start();
User=User.find.byId(123);
// ... 其他查询
List capturedLogs=LoggedSql.stop();
注意:如果您不需要像通常一样处理控制台中显示的语句,那么您甚至不需要获取语句的
列表
。因此,您也可以这样使用它:

if(Play.isDev())LoggedSql.start();
User=User.find.byId(345);
// ... 其他查询
if(Play.isDev())LoggedSql.stop();

从Play 2.5开始,记录SQL语句非常简单,Play 2.5提供了一种简单的方法来记录SQL语句,该方法构建在所有JDBC数据库、连接池实现和持久性框架(Anorm、Ebean、JPA、Slick等)上。启用日志记录后,您将看到发送到数据库的每个SQL语句,以及有关该语句运行时间的性能信息

Play 2.5中的SQL日志语句功能可通过数据库使用logSql属性进行配置:

db.default.logSql=true
之后,您可以通过将以下行添加到
logback.xml
,来配置jdbcdslog exp日志级别:

  <logger name="org.jdbcdslog.ConnectionLogger" level="OFF"  /> <!-- Won' log connections -->
  <logger name="org.jdbcdslog.StatementLogger"  level="INFO" /> <!-- Will log all statements -->
  <logger name="org.jdbcdslog.ResultSetLogger"  level="OFF"  /> <!-- Won' log result sets -->

我成功地使用了。正如@Saeed Zarinfam提到的,游戏2.5默认包括这一点

与此不同,此解决方案显示参数值而不是问号

以下是我在Play 2.4和MySQL中使用它的步骤:

添加到build.sbt:

"com.googlecode.usc" % "jdbcdslog" % "1.0.6.2"
添加到logback.xml:

<logger name="org.jdbcdslog.StatementLogger"  level="INFO" /> <!-- Will log all statements -->
更改db.default.url(示例):

更改为
jdbc:jdbcslog:mysql://127.0.0.1:3306/mydb;targetDriver=com.mysql.jdbc.Driver

更改db.default.driver:

org.jdbcdslog.DriverLoggingProxy

有可能用代码来做吗?仅在Play.isDev()时激活!为了避免在生产中记录SQL语句,您可以使用两个不同的文件:默认文件用于开发(logback.xml),另一个用于生产(logback production.xml)。然后,要使用生产版,添加-Dlogger.resource=conf/logback-production.xml.Question是用于播放2.4,但从播放2.6开始,org.avaje.ebean现在是io.ebeant这对我不起作用。播放2.4.2和“com.typesafe.sbt”%“sbt播放ebean”%“1.0.0”、“org.avaje.ebanorm”%“avaje-ebanorm mocker”%“6.15.1”我得到的是空集。我遗漏了什么明显的东西吗?
jdbc:mysql://127.0.0.1:3306/mydb
org.jdbcdslog.DriverLoggingProxy