¿Por qué el comando ">" en una consola de Windows no redirige todos los mensajes a un archivo?

¿Por qué el comando ">" en una consola de Windows no redirige todos los mensajes a un archivo?

Estoy tratando de construir unescalaproyecto consbt, entonces ejecuto un comando:

sbt clean test > log.log

Lo que significa que cualquier mensaje que la herramienta sbt escriba en la consola de Windows debe escribirse en el archivo "log.log". Pero a veces obtengo el seguimiento de pila escrito en la consola y no en el archivo:

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

¿Por qué el comando ">" no redirige todos los mensajes a un archivo?

Respuesta1

Lo que ha pegado no es la salida estándar del comando (STDOUT), sino la salida de error del comando (STDERR).

Cuando agrega "> archivo_salida" al comando, solo está redirigiendo STDOUT a ese archivo, no a STDERR.

Si desea generar errores, en el mismo archivo que la salida estándar, debe usar

sbt clean test > log.log 2>&1

lo que hace "2>&1" es decir que se envíe el error al mismo lugar que los resultados de salida estándar.

También puedes hacer algo como esto:

sbt clean test > log.log 2>error.log

Enviará STDOUT a log.log y STDERR al segundo archivo llamado error.log, si desea separarlos.

Vea esto sobre los operadores de redirector de comandos

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

información relacionada