Saya mencoba membangun proyek Scala dengan sbt , jadi saya menjalankan perintah:
sbt clean test > log.log
Yang berarti bahwa setiap pesan yang ditulis oleh alat sbt ke konsol Windows harus ditulis ke file "log.log". Tapi kadang-kadang saya mendapatkan stacktrace yang ditulis ke konsol dan tidak ke dalam file:
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
Mengapa ">" perintah tidak mengalihkan semua pesan ke file?
2>&1
dari jawaban Anda, dan1<&2
dari tautannya? Saya selalu melihatnya dengan cara Anda, dan cara lain juga masuk akal (hanya mengarahkan "input" alih-alih "output" tetapi sebaliknya tampak sama), tetapi menarik untuk melihat pilihan kedua.2>&1
mengatakan bahwa output dari STDERR harus diarahkan ke output yang sama dengan STDOUT.1<&2
mengatakan bahwa output dari STDERR harus digunakan sebagai input ke STDOUT. Keduanya menghasilkan hasil yang sama, dan hanya masalah preferensi2>&1
setelah itu> log.log
.