2014-03-14 14 views

回答

1

據我所知,只有SBT選項是不可能的。但這question提供了一個很好的解決方案。我將重申你的具體情況的答案。以下所有內容都假設爲Unix操作系統,但應該可以將其適用於Windows環境(如果使用Cygwin,則可以直接使用)。

首先,你需要一個叫做例如predate.sh腳本,包含:

#!/bin/bash 
while read line ; do 
    echo "$(date): ${line}" 
done 

date命令可以改變下您的需求。然後,您必須使該腳本可執行文件爲chmod u+x predate.sh

最後運行初始命令和管道的標準輸出到我們的新的腳本:

sbt --debug update | ./predate.sh > sbtupdate.log 

請閱讀鏈接的問題,它包含了有趣的其它響應。

+0

一個不錯的工作 – anuni

1

我想你需要的是開發作爲Add a custom logger描述的定製記錄器:

設置extraLoggers可用於添加自定義記錄器。自定義 記錄器應該實現[AbstractLogger]。 extraLoggers是一個函數 ScopedKey [_] => Seq [AbstractLogger]。這意味着它可以根據請求記錄器的任務提供 不同的日誌記錄。

在自定義記錄器中,您會預先添加帶有時間戳的消息。

def datedPrintln = (m: String) => 
    println(s"+++ ${java.util.Calendar.getInstance().getTime()} $m") 

extraLoggers := { 
    val clientLogger = FullLogger { 
    new Logger { 
     def log(level: Level.Value, message: => String): Unit = 
     if(level >= Level.Info) datedPrintln(s"$message at $level") 
     def success(message: => String): Unit = datedPrintln(s"success: $message") 
     def trace(t: => Throwable): Unit = datedPrintln(s"trace: throwable: $t") 
    } 
    } 
    val currentFunction = extraLoggers.value 
    (key: ScopedKey[_]) => clientLogger +: currentFunction(key) 
} 

你可以找到關於如何圍繞:)開發自己的記錄器在我的回答Custom extraLogger not getting [success] messages in sbt?

+0

感謝了很多詳細的說明! – anuni