播放2.4 - 在日志中显示Ebeans SQL语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了播放2.4 - 在日志中显示Ebeans SQL语句相关的知识,希望对你有一定的参考价值。

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

我尝试将配置编辑为:

db.default.logStatements=true

并将其添加到logback.xml

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

按照我在网上找到的一些答案,但它似乎不适用于2.4 ......

答案

使用Play 2.4更改了日志记录。从现在开始,要在控制台中显示SQL语句,只需将以下行添加到conf / logback.xml文件中:

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

它应该工作得很好。

正如@ Flo354在评论中指出的那样,使用Play 2.6你应该使用:

<logger name="io.bean" level="TRACE" />
另一答案

从Play 2.5记录SQL语句非常简单,Play 2.5有一种简单的方法来记录基于jdbcdslog构建的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 -->
另一答案

仅供参考,有关Ebean的new doc page的精彩视频教程,展示了仅为代码的选定区域捕获SQL语句的方法。

由于这个原因,您可以在开发和/或使用已记录的语句执行showed in video测试时仅在有问题的位置记录语句。

简而言之:通常会将最新的avaje-ebeanorm-mocker依赖项添加到您的built.sbt中,以便稍后您可以在代码中使用它:

LoggedSql.start();
User user = User.find.byId(123);
// ... other queries
List<String> capturedLogs = LoggedSql.stop();

请注意,如果您不需要处理它们,甚至不需要获取List语句,因为它们通常会在控制台中显示。所以你也可以像这样使用它:

if (Play.isDev()) LoggedSql.start();
User user = User.find.byId(345);
// ... other queries
if (Play.isDev()) LoggedSql.stop();
另一答案

我使用jdbcdslog取得了成功。正如@Saeed Zarinfam提到的here,Play 2.5默认包括这个。

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

以下是我为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 -->

创建conf / jdbcdslog.properties文件,其中包含:

jdbcdslog.driverName=mysql
jdbcdslog.showTime=true

更改db.default.url(示例):

jdbc:mysql://127.0.0.1:3306/mydb

改变jdbc:jdbcdslog:mysql://127.0.0.1:3306/mydb;targetDriver=com.mysql.jdbc.Driver

更改db.default.driver:

org.jdbcdslog.DriverLoggingProxy

以上是关于播放2.4 - 在日志中显示Ebeans SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

推荐网言网语架构师:90行代码,搞定你的日志监控框架!

Play Framework 2.3.8 中与 Ebeans 的 OneToOne 关系

播放 1.2.4 CRUD:基​​于模型操作 UI

play1.2.4框架html中无法显示错误信息

SQL结构化查询语——之DQL语言

播放框架 2.4 Ebean