Scala プロジェクトを sbt でビルドしようとしているので、次のコマンドを実行します。
sbt clean test > log.log
つまり、sbtツールがWindowsコンソールに書き込むメッセージはすべて、「log.log」ファイルに書き込む必要があります。しかし、ファイルではなくコンソールにスタックトレースが書き込まれることがあります。
C:\path>sbt clean test > log.log
Java.lang.ExceptionInInitializerError
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.Java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.Java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.Java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.Java:107)
Caused by: Java.lang.ClassCastException: Class org.infinispan.configuration.parsing.Parser60 does not implement org.infinispan.configuration.parsing.ConfigurationParser
">"コマンドがすべてのメッセージをファイルにリダイレクトしないのはなぜですか?
貼り付けたのは、コマンドの標準出力(STDOUT)ではなく、コマンドのエラー出力(STDERR)です。
コマンドに "> output_file"を追加すると、STDOUTはそのファイルにリダイレクトされるだけで、STDERRはリダイレクトされません。
エラーを出力したい場合は、標準出力と同じファイルに使用する必要があります
sbt clean test > log.log 2>&1
「2>&1」が行うことは、標準出力結果と同じ場所にエラーを出力することを意味します。
次のようなこともできます:
sbt clean test > log.log 2>error.log
分離する場合は、STDOUTをlog.logに出力し、STDERRをerror.logという2番目のファイルに出力します。
コマンドリダイレクタ演算子についてはこちらをご覧ください