【问题标题】:Slick 3.0 Avoid Excessive Logging When Unit TestingSlick 3.0 在单元测试时避免过多的日志记录
【发布时间】:2017-08-14 10:20:21
【问题描述】:

我有一个项目,我正在使用 Slick 对我的关系数据进行建模。我编写了一些利用 H2 数据库的单元测试。我已经集成了一个 CI 管道,该管道在每次提交到我的主分支时运行单元测试!

我使用 sbt 作为我的构建工具,我从构建日志中看到的是它包含大量带有 DEBUG 消息的日志行。这些消息是由底层的 Slick 库编写的,我绝对想摆脱它们。我尝试了几种方法,但似乎都没有对那些 DEBUG 日志语句生效。

我的项目是一个基于 Play Framework 的网络项目,这是我在 build.sbt 中的依赖项:

libraryDependencies ++= Seq(
  ws,
  "io.monix" %% "monix" % "2.1.0",
  "com.typesafe.slick" %% "slick" % "3.2.0",
  "com.typesafe.scala-logging" %% "scala-logging" % "3.4.0",
  "org.scala-lang.modules" % "scala-async_2.11" % "0.9.6",
  "com.zaxxer" % "HikariCP" % "2.4.1",
  "com.typesafe" % "config" % "1.3.1",
  "mysql" % "mysql-connector-java" % "5.1.26",

  // test
  "com.typesafe.akka" %% "akka-testkit" % "2.5.2" % Test,
  "org.scalatest" %% "scalatest" % "3.0.1" % Test,
  "com.h2database" % "h2" % "1.4.186" % Test,
"org.scalatestplus.play" %% "scalatestplus-play" % "1.5.0" % Test
)

我尝试了以下方法:

  1. 将 build.sbt 中的 logLevel 设置为 INFO

    logLevel := Level.Info

很遗憾,没有任何效果!

  1. 我使用了如下所示的 logback.xml:

    <logger name="scala.slick" level="INFO" />
    <logger name="play" level="INFO" />
    <logger name="application" level="INFO" />
    <logger name="akka" level="INFO" />
    

并在我运行单元测试时使用了以下命令:

sbt -Dlogger.resource=conf/logback.xml clean coverage test coverageReport

但奇怪的是,这根本没有任何效果,因为我仍然看到那些烦人的 DEBUG 语句!我正在使用 Play Framework 2.5.9!

【问题讨论】:

    标签: logging sbt slick


    【解决方案1】:

    好的,这就是我为摆脱 Slick 的 DEBUG 语句所做的:

    将我的 build.sbt 依赖项修改为:

      // Dependencies needed for Slick
      "com.typesafe.slick" %% "slick" % "3.2.0",
      "org.slf4j" % "slf4j-nop" % "1.6.4",
      "com.typesafe.slick" %% "slick-hikaricp" % "3.2.0"
    

    在我的 build.sbt 中添加了以下内容:

    javaOptions in Test +="-Dlogger.file=conf/logback.xml"
    

    并确保在我的应用程序的 conf/ 文件夹中有一个 logger.xml! 请注意这个文件应该被称为logback.xml,或者应该像logback-test.xml那样以logback开头,否则它不起作用!

    这就是我在运行单元测试时调用我的 sbt 的方式:

    sbt clean test
    

    【讨论】:

    • 当你把 logback-test.xml 放到测试类路径中,就像放到 src/test/resources 一样,你甚至不必添加 logger.file 选项,文件应该会自动找到。
    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2013-09-17
    • 2016-11-16
    • 2015-09-09
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多