Logging Slick 3.0在单元测试时避免过度记录

Logging Slick 3.0在单元测试时避免过度记录,logging,sbt,slick,Logging,Sbt,Slick,我有一个项目,我正在使用Slick对我的关系数据进行建模。我已经编写了一些利用H2数据库的单元测试。我已经集成了一个CI管道,它在每次提交到我的主分支时运行单元测试 我使用sbt作为我的构建工具,从构建日志中可以看到,它包含加载和加载带有调试消息的日志行。这些消息是由底层的Slick库编写的,我绝对想把它们去掉。我已经尝试了几种方法,但似乎没有一种方法对那些大量的调试日志语句有效 我的项目是一个基于Play Framework的web项目,以下是我在build.sbt中的依赖项: library

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

我使用sbt作为我的构建工具,从构建日志中可以看到,它包含加载和加载带有调试消息的日志行。这些消息是由底层的Slick库编写的,我绝对想把它们去掉。我已经尝试了几种方法,但似乎没有一种方法对那些大量的调试日志语句有效

我的项目是一个基于Play Framework的web项目,以下是我在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
)
javaOptions in Test +="-Dlogger.file=conf/logback.xml"
我尝试了以下方法:

将build.sbt中的logLevel设置为INFO

logLevel:=Level.Info

不幸的是,这没有任何效果

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

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

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

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

将my 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"
在my 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
)
javaOptions in Test +="-Dlogger.file=conf/logback.xml"
并确保在我的应用程序的conf/文件夹中有一个logger.xml!请注意,此文件应称为logback.xml,或者应以logback-test.xml之类的logback开头,否则它将无法工作

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

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

当您将logback-test.xml放在测试类路径中时,就像放在src/test/resources中一样,您甚至不必添加logger.file选项,该文件应该会自动找到。