重头戏2.4-在日志中显示Ebens SQL语句
如何在日志中显示SQL语句?我正在使用EBeans,由于某些原因,它无法插入,但我看不出问题出在哪里 我试图将我的配置编辑为:重头戏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文件中添
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