我正在创建一个 Play 2.1 应用程序,我决定在其中使用 Slick 进行数据库交互。
但是我找不到有关如何为 Slick 配置/启用日志记录的文档。
有人知道吗?
8 回答
Slick 不会做任何高于DEBUG
级别的日志记录。如果application.conf
您添加以下行:
logger.scala.slick=DEBUG
你会被来自查询编译器的信息淹没。
您可能只对会话信息(连接池管理、查询字符串等)感兴趣。在这种情况下,只需添加
logger.scala.slick.session=DEBUG
到您的 Play 应用程序的application.conf
对于没有 Slick 的 PlayFramework 2.5.0
添加到所有数据库配置
db.default.logSql=true
添加到您的 logback.xml 文件中:
<logger name="logger.org.jdbcdslog.StatementLogger" level="INFO" />
所有的语句都将被记录。
参考:
https://www.playframework.com/documentation/2.5.x/ScalaDatabase#How-to-configure-SQL-log-statement
要玩 Slick 3.0,只需使用
<logger name="slick.jdbc.JdbcBackend.statement" level="DEBUG" />
要仅打印 select 语句,在 play-2.2.1 和 slick 2.0.0 中,在 application.conf 中有:
logger.scala.slick.jdbc.JdbcBackend.statement=DEBUG
Slick 似乎使用slf4j进行日志记录。因此,您可能希望添加对slf4j-simple
项目的依赖项,并为 Slick 类设置所需的日志级别。
我尝试将logback.xml与 Slick 记录器集成,但它不起作用。
修改 logger.xml(根据您的版本从 GitHub 获取最新版本)并添加光滑的记录器,而是可以工作。
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />
<!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<logger name="scala.slick" level="SQL" />
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
对于 slick 3.1.0,将其粘贴logback.xml
到您的resources
目录中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="application" level="DEBUG"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="slick" level="INFO"/>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
就我而言,我必须添加<logger name="slick" level="INFO"/>
到我的log4j2.xml
文件中。我将 Slick 3.0.3 与 Spray 1.3.3 和 Log4j 2.1 一起使用