13

如何抑制 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
4

3 回答 3

8

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

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

例如

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

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

于 2015-04-24T03:45:57.303 回答
2

您可以按照此处所述更改日志记录级别。因此,您可以将日志记录级别更改为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命令打印的信息消息。您可以将设置添加到构建文件中以使其永久化。

于 2013-05-14T20:11:00.147 回答
0

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

文件 :~/.sbt/1.0/global.sbt
logLevel := Level.Warn

shellPrompt := { state =>
  "sbt (%s)> ".format(Project.extract(state).currentProject.id)
}
于 2017-11-23T10:37:24.673 回答