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

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

私は構築しようとしていますスカラプロジェクト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

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

答え1

貼り付けたのはコマンドの標準出力(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

関連情報