【问题标题】:Suppressing sbt debug output抑制 sbt 调试输出
【发布时间】:2017-11-23 18:37:24
【问题描述】:

如何抑制 SBT 的调试消息?它们被记录到标准输出,因此运行项目会产生以下结果:

$ cat src/main/scala/Hello.scala 
object Hello {
  def main(args: Array[String]) {
    Console.println("Hello sbt")
  }
}

$ sbt run > out.txt

$ cat out.txt
[info] Set current project to hello (in build file:/home/synapse/projects/algs2/)
[info] Running Hello 
Hello sbt
[success] Total time: 1 s, completed May 14, 2013 11:39:23 PM

【问题讨论】:

标签: scala sbt


【解决方案1】:

正如this reference 中提到的,也由另一个答案链接,可以在到达 sbt 控制台之前更改日志记录级别。

“要在启动时执行任何命令之前设置日志级别,请在日志级别之前使用--。”

例如

$ sbt --error "runMain my.pckg.Main"

但是,您仍然会在最后记录 [success] 消息。为使其静音,请考虑通过管道连接到grep -v

【讨论】:

  • 可以通过在build.sbt 中添加showSuccess := false 来删除[success]
【解决方案2】:

您可以按照here 的说明更改日志记录级别。所以你可以把日志级别改成Warn

> run
[info] Running Server
Port is: null
Embedded server running on port 8080. Press any key to stop.

[success] Total time: 3 s, completed 14-May-2013 21:02:31
>
> set logLevel in run := Level.Warn
...
[info] Reapplying settings...
[info] Set current project to server (in build file:/Users/me/myproject/)
> run
Port is: null
Embedded server running on port 8080. Press any key to stop.

并且您不再收到为run 命令打印的信息消息。您可以将该设置添加到您的构建文件中以使其永久化。

【讨论】:

  • build.sbt 包含一行 logLevel := Level.Error 并且 sbt run 仍然输出信息和成功消息
【解决方案3】:

您可以将日志级别属性添加到全局 SBT 属性。 这适用于 sbt 版本 1.x

档案:~/.sbt/1.0/global.sbt
logLevel := Level.Warn

shellPrompt := { state =>
  "sbt (%s)> ".format(Project.extract(state).currentProject.id)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2018-03-27
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多