Я пытаюсь построить проект Scala с помощью sbt , поэтому я запускаю команду:
sbt clean test > log.log
Это означает, что любые сообщения, которые инструмент sbt записывает в консоль Windows, должны быть записаны в файл «log.log». Но иногда я получаю стека трассировки записывается в консоль, а не в файл:
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
Почему команда ">" не перенаправляет все сообщения в файл?
2>&1
вашим ответом и1<&2
ссылкой? Я всегда видел это по-своему, и имеет смысл и другой способ (просто перенаправление «ввода» вместо «вывода», но в остальном выглядит одинаково), но интересно увидеть второй вариант.2>&1
говорит, что вывод из STDERR должен быть перенаправлен на тот же вывод, что и STDOUT.1<&2
говорит, что вывод из STDERR должен использоваться как вход для STDOUT. Оба дают одинаковый результат, и это просто вопрос предпочтений2>&1
после> log.log
.