web-dev-qa-db-ja.com

Windowsコンソールの ">"コマンドがすべてのメッセージをファイルにリダイレクトしないのはなぜですか?

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

">"コマンドがすべてのメッセージをファイルにリダイレクトしないのはなぜですか?

21
Cherry

貼り付けたのは、コマンドの標準出力(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番目のファイルに出力します。

コマンドリダイレクタ演算子についてはこちらをご覧ください

http://www.Microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true

35
rAlen