2013-01-24 106 views
11

當使用sbt與分叉時(fork in run := true),從應用程序到標準輸出的每個輸出都以​​爲前綴;輸出到stderr的前綴爲[error]sbt:在標準輸出中抑制日誌記錄前綴

當使用輸出到stderr的Java日誌記錄框架時,這種行爲有些惱人。由此產生的調試消息通常看起來像這樣:

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

我想抑制這些前綴,就像運行代碼時不分叉。我試過的:

  • 設置sbt -Dsbt.log.noformat=true在sbt啓動腳本中。但是這隻消除了彩色的ANSI輸出;前綴仍然沒有顏色
  • 設置logLevel in run := Level.Errorbuild.sbt。這似乎沒有對分叉記錄有任何影響。

有什麼辦法可以抑制前綴嗎?

+0

我很好奇這一點。 – Andy

+0

找到了!我追蹤了SBT如何啓動流程的來源:https://github.com/sbt/sbt/blob/0.13/run/src/main/scala/sbt/Fork.scala。然後我只是從該文件中搜索一些關鍵字。 – Andy

回答

10

您需要設置項目的output strategy

在我的擴展建設,我有以下設置:

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 
) 
+0

非常感謝!看起來輸出策略是0.13的新功能? Iirc,我在0.12中沒有看到有關輸出策略的任何內容。 – bluenote10

+0

我正在運行0.12.3,該功能對我來說工作得很好。 – Andy

+0

是的,我只是有時間來試驗它。完美的作品! – bluenote10