Play 2.4 - 在日志中显示 Ebeans SQL 语句
Play 2.4 - Display Ebeans SQL statement in logs
如何在日志中显示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" />
仅供参考,Ebean 的 new doc page 上有一个不错的视频教程,展示了仅针对代码的选定区域捕获 SQL 语句的方法。
由于这一点,您可以在开发时仅在有问题的地方记录语句 and/or 使用记录的语句作为 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();
从 Play 2.5 开始,记录 SQL 语句非常简单,Play 2.5 有一种简单的方法来记录 SQL 语句,它建立在 jdbcdslog 的基础上,适用于所有 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 -->
我成功使用了 jdbcdslog. As @Saeed Zarinfam mentioned ,Play 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 -->
创建 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
如何在日志中显示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" />
仅供参考,Ebean 的 new doc page 上有一个不错的视频教程,展示了仅针对代码的选定区域捕获 SQL 语句的方法。
由于这一点,您可以在开发时仅在有问题的地方记录语句 and/or 使用记录的语句作为 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();
从 Play 2.5 开始,记录 SQL 语句非常简单,Play 2.5 有一种简单的方法来记录 SQL 语句,它建立在 jdbcdslog 的基础上,适用于所有 JDBC 数据库、连接池实现和持久性框架(Anorm、Ebean、JPA、Slick 等)。当您启用日志记录时,您将看到每个 SQL 语句发送到您的数据库以及有关该语句花费多长时间的性能信息 运行.
Play 2.5 中的 SQL 日志语句功能可以通过数据库配置,使用 logSql 属性:
db.default.logSql=true
之后,您可以通过将此行添加到 logback.xml
:
<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 -->
我成功使用了 jdbcdslog. As @Saeed Zarinfam mentioned
与
以下是我为使其适用于 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