Warum leitet der Befehl ">" in einer Windows-Konsole nicht alle Nachrichten in eine Datei um?

Warum leitet der Befehl ">" in einer Windows-Konsole nicht alle Nachrichten in eine Datei um?

Ich versuche, eineScalaProjekt mitsbt, also führe ich einen Befehl aus:

sbt clean test > log.log

Das bedeutet, dass alle Nachrichten, die das sbt-Tool in die Windows-Konsole schreibt, in die Datei „log.log“ geschrieben werden sollten. Aber manchmal bekomme ich den Stacktrace in die Konsole geschrieben und nicht in die Datei:

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

Warum leitet der Befehl ">" nicht alle Nachrichten in eine Datei um?

Antwort1

Was Sie eingefügt haben, ist nicht die Standardausgabe des Befehls (STDOUT), sondern die Fehlerausgabe des Befehls (STDERR).

Wenn Sie dem Befehl "> output_file" hinzufügen, leiten Sie nur STDOUT zu dieser Datei um, nicht STDERR.

Wenn Sie Fehler in dieselbe Datei wie die Standardausgabe ausgeben möchten, verwenden Sie

sbt clean test > log.log 2>&1

was "2>&1" bewirkt, ist, dass der Fehler an derselben Stelle ausgegeben werden soll, an der auch die Standardausgabeergebnisse liegen.

Sie können auch Folgendes tun:

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

Es wird STDOUT an log.log und STDERR an eine zweite Datei namens error.log ausgegeben, wenn Sie sie trennen möchten.

Lesen Sie hier mehr über Befehlsumleitungsoperatoren

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true

verwandte Informationen