问题 sbt:在stdout中抑制日志记录前缀


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

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

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

我想压缩这些前缀,就像在没有分叉的情况下运行代码一样。我尝试了什么:

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

有没有办法压制前缀?


9247
2018-01-24 15:11


起源

我对此也很好奇。 - Andy
找到了!我追踪了SBT如何启动流程的来源: github.com/sbt/sbt/blob/0.13/run/src/main/scala/sbt/Fork.scala。然后我只是从该文件中搜索了一些关键字。 - Andy


答案:


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

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

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
)

10
2018-05-21 17:28



非常感谢你!看起来输出策略是0.13的新功能? Iirc,我在0.12中没有看到关于输出策略的任何信息。 - bluenote10
我正在运行0.12.3并且该功能对我来说很好。 - Andy
是的,我有时间试验它。完美的工作! - bluenote10
它只是我还是现在在0.13.11中打破了? - Steiny