如何将控制台的命令输出重定向到文件?

时间:2014-08-06 08:22:46

标签: sbt

有什么方法可以将输出从单个命令重定向到sbt中的文件?

我可以退出sbt,执行sbt mycommand > out.txt,然后重新启动它,但我想知道是否有替代方案?

1 个答案:

答案 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)
}