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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-22 04:51:50  来源:igfitidea点击:

Logging options for Slick

scalaloggingplayframeworkplayframework-2.0slick

提问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

Slick seems to use slf4jfor its logging. So you might want to add a dependency on something like slf4j-simpleto your project and set the desired log level for the Slick classes.

Slick 似乎使用slf4j进行日志记录。因此,您可能希望为slf4j-simple您的项目添加对类似内容的依赖,并为 Slick 类设置所需的日志级别。

回答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 一起使用