有什么方法可以将输出从单个命令重定向到sbt中的文件?
我可以退出sbt,执行sbt mycommand > out.txt
,然后重新启动它,但我想知道是否有替代方案?
答案 0 :(得分:5)
在Add a custom logger中,您可以找到有关使用自定义记录器记录到文件所需内容的更多信息 - 使用extraLoggers
并添加sbt.AbstractLogger的实例节约。
您可能会发现Displaying timestamp for debug mode in SBT?的答案很有用。这里复制的例子是:
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)
}