scala Slick 的日志记录选项
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14453447/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Logging options for Slick
提问by Farmor
I'm createing a Play 2.1 app, in which I have decided to use Slick for database interaction.
However I can't find documentation about how to configure/enable logging for Slick.
Anyone knows this?
我正在创建一个 Play 2.1 应用程序,其中我决定使用 Slick 进行数据库交互。
但是,我找不到有关如何为 Slick 配置/启用日志记录的文档。
有人知道这个吗?
回答by moatra
Slick doesn't do much of any logging above DEBUGlevel. In application.confif you add the line:
Slick 不会做任何高于DEBUG级别的日志记录。在application.conf您添加一行:
logger.scala.slick=DEBUG
logger.scala.slick=DEBUG
you're going to get deluged with information from the query compiler.
你会被来自查询编译器的信息淹没。
You're probably just interested in the session information (Connection pool management, query strings, etc). In which case, just add
您可能只对会话信息(连接池管理、查询字符串等)感兴趣。在这种情况下,只需添加
logger.scala.slick.session=DEBUG
logger.scala.slick.session=DEBUG
to your Play application's application.conf
到您的 Play 应用程序的 application.conf
回答by Jonas Anso
For PlayFramework 2.5.0 without Slick
对于没有 Slick 的 PlayFramework 2.5.0
Add to all your database configurations
添加到所有数据库配置
db.default.logSql=true
Add to your logback.xml file:
添加到您的 logback.xml 文件中:
<logger name="logger.org.jdbcdslog.StatementLogger" level="INFO" />
All the statements will be logged.
所有的语句都会被记录下来。
Reference:
参考:
https://www.playframework.com/documentation/2.5.x/ScalaDatabase#How-to-configure-SQL-log-statement
https://www.playframework.com/documentation/2.5.x/ScalaDatabase#How-to-configure-SQL-log-statement
For play with Slick 3.0, just use
要玩 Slick 3.0,只需使用
<logger name="slick.jdbc.JdbcBackend.statement" level="DEBUG" />
回答by user1187983
To print only select statements, in play-2.2.1 with slick 2.0.0, in application.conf have:
要仅打印 select 语句,在 play-2.2.1 和 slick 2.0.0 中,在 application.conf 中有:
logger.scala.slick.jdbc.JdbcBackend.statement=DEBUG
回答by Hyman
I'm not using Play at the moment, but configure it as you would use logback. This is a nice descriptionfor setting up Play logging.
我目前不使用 Play ,但像使用logback一样配置它。这是设置播放日志的很好的描述。
One option is to add
一种选择是添加
logger.scala.slick=INFO
to application.conf, as per Play manual. The other, if you have a custom logback.xml, is to add there the following line:
到 application.conf,按照 Play 手册。另一个,如果您有自定义 logback.xml,则添加以下行:
<logger name="scala.slick" level="INFO" />
回答by Lord of the Goo
I've tried to integrate the logback.xmlwith the Slick logger but it doesn't work.
我尝试将logback.xml与 Slick 记录器集成,但它不起作用。
Modifing logger.xml(get it the latest version from GitHub based on your version) and adding the slick logger, instead, works.
修改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>
回答by Lord of the Goo
回答by veegee
For slick 3.1.0, paste this in logback.xmlin your resourcesdirectory:
对于 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>
回答by lautaro.dragan
In my case I had to add <logger name="slick" level="INFO"/>to my log4j2.xmlfile. I'm using Slick 3.0.3 with Spray 1.3.3 and Log4j 2.1
就我而言,我不得不添加<logger name="slick" level="INFO"/>到我的log4j2.xml文件中。我将 Slick 3.0.3 与 Spray 1.3.3 和 Log4j 2.1 一起使用

