SBT:禁止在标准输出中取消日志记录前缀



当使用带有分叉(fork in run := true)的sbt时,从我的应用程序到stdout的每个输出都以[info]为前缀;输出到stderr的前缀为[error]

当使用输出到 stderr 的 Java 日志记录框架时,这种行为有点烦人。生成的调试消息通常如下所示:

[error] [main] INFO MyClass ...
[error] [main] DEBUG MyClass ...

我想抑制这些前缀,就像在不分叉的情况下运行代码一样。我尝试过:

  • 在 SBT 启动脚本中设置sbt -Dsbt.log.noformat=true。但这只会删除彩色 ANSI 输出;前缀仍然存在,只是没有颜色
  • build.sbt中设置logLevel in run := Level.Error。这似乎对带有分叉的日志记录没有任何影响。

有什么方法可以抑制前缀吗?

您需要设置项目的输出策略。

在我的扩展版本中,我有以下设置:

settings = Project.defaultSettings ++ Seq(
  fork                  :=   true, // Fork to separate process
  connectInput in run   :=   true, // Connects stdin to sbt during forked runs
  outputStrategy        :=   Some(StdoutOutput) // Get rid of output prefix
  // ... other settings
)

可以做

sbt -error ...

还有

sbt -warn ...

最新更新