Estoy tratando de construir un proyecto Scala con sbt , así que 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 stacktrace 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?
fuente
2>&1
tu respuesta y1<&2
el enlace? Siempre lo he visto a tu manera, y la otra forma también tiene sentido (simplemente redirigiendo "entrada" en lugar de "salida" pero de lo contrario parece lo mismo), pero es interesante ver la segunda opción.2>&1
dice que la salida de STDERR debe redirigirse a la misma salida que STDOUT.1<&2
está diciendo que la salida de STDERR debería usarse como entrada para STDOUT. Ambos producen el mismo resultado y son simplemente una cuestión de preferencia2>&1
después de la> log.log
.