Estou tentando criar um projeto Scala com sbt , então eu executo um comando:
sbt clean test > log.log
O que significa que todas as mensagens que a ferramenta sbt grava no console do Windows devem ser gravadas no arquivo "log.log". Mas às vezes eu recebo o stacktrace gravado 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 o comando ">" não redireciona todas as mensagens para um arquivo?
fonte
2>&1
sua resposta e1<&2
o link? Eu sempre vi do seu jeito, e o outro caminho também faz sentido (apenas redirecionando "entrada" em vez de "saída", mas aparentando o mesmo), mas é interessante ver a segunda opção.2>&1
está dizendo que a saída de STDERR deve ser redirecionada para a mesma saída que STDOUT.1<&2
está dizendo que a saída de STDERR deve ser usada como uma entrada para STDOUT. Ambos produzem o mesmo resultado e são simplesmente uma questão de preferência #2>&1
após o> log.log
.