Por que o comando “” em um console do Windows não redireciona todas as mensagens para um arquivo?

21

Estou tentando criar um projeto Scala com sbt , então eu executo um comando:

sbt clean test > log.log

O que significa que qualquer mensagem que a ferramenta sbt grava no console do Windows deve ser gravada no arquivo "log.log". Mas às vezes eu consigo o stacktrace escrito no console e não no arquivo:

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 que ">" comando não redireciona todas as mensagens para um arquivo?

    
por Cherry 27.10.2014 / 09:43

1 resposta

35

O que você colou não é a saída padrão do comando (STDOUT), mas a saída de erro do comando (STDERR).

Quando você adiciona "> output_file" ao comando, você está apenas redirecionando STDOUT para esse arquivo, não para STDERR.

Se você deseja gerar erros, para o mesmo arquivo que a saída padrão você precisa usar

sbt clean test > log.log 2>&1

O que "2 > & 1" significa, é o erro de saída para o mesmo local que os resultados de saída padrão.

Você também pode fazer algo assim:

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

Ele emitirá STDOUT para log.log e STDERR para o segundo arquivo chamado error.log, se você quiser separá-los.

Veja isto sobre os operadores de redirecionamento de comandos

link

    
por 27.10.2014 / 10:36