Как установить SBT logLevel для члена журнала задачи потока? - PullRequest
0 голосов
/ 03 января 2019

Как установить logLevel при использовании streams.value.log в задаче SBT ?

Например, как журналы этой задачи могут быть подавлены до Warn журналов ?:

lazy val mainRunner = taskKey[Seq[File]]("Runs a main method")
lazy val mainRunnerSetting = mainRunner := {


  val logger = streams.value.log

  (runner in Compile).value.run(
    mainClass = "com.me.Main",
    classpath = (dependencyClasspath in Compile).value.files,
    log = logger,
    options = Array()
  )
}

Внутри и снаружи задачи я пробовал различные настройки logLevel, например:

logLevel in run in Compile := Level.Warn
logLevel := Level.Warn
logLevel in mainRunner := Level.Warn
logLevel in streams := Level.Warn

... но всегда устанавливается на Info, когда эта задача выполняется

1 Ответ

0 голосов
/ 05 января 2019

Не уверен, где ваша проблема, но это build.sbt содержимое работает нормально с настройкой уровня журнала для задачи

val mainRunner = taskKey[Unit]("Print some log")
val runner2 = taskKey[DummyRun]("hold dummy runner")

lazy val root = project
  .in(file("."))
  .settings(
    runner2 := new DummyRun,
    mainRunner := {
      val logger = streams.value.log
      logger.warn("Hello warn")
      logger.info("Hello info")
      logger.debug("Hello debug")
      runner2.value.run(logger)
    },
    (logLevel in mainRunner) := Level.Warn
  )

Где DummyRun - класс в папке project с содержимым

import sbt.Logger

class DummyRun {
  def run(log: Logger): Unit = {
    log.warn("DummyRun warn")
    log.info("DummyRun info")
    log.debug("DummyRun debug")
  }
}

Выходы:

> mainRunner
[warn] Hello warn
[warn] DummyRun warn
...