Windows 콘솔의 ">"명령이 모든 메시지를 파일로 리디렉션하지 않는 이유는 무엇입니까?


21

sbtScala 프로젝트를 작성 하려고 하므로 명령을 실행하십시오.

sbt clean test > log.log

이는 sbt 도구가 Windows 콘솔에 쓰는 메시지를 "log.log"파일에 써야한다는 것을 의미합니다. 그러나 때로는 파일에 저장되지 않고 콘솔에 stacktrace가 작성됩니다.

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

">"명령이 모든 메시지를 파일로 리디렉션하지 않는 이유는 무엇입니까?

답변:


35

붙여 넣은 것은 명령 표준 출력 (STDOUT)이 아니라 명령의 오류 출력 (STDERR)입니다.

"> output_file"을 명령에 추가하면 STDERR이 아닌 STDOUT 만 해당 파일로 경로 재 지정됩니다.

표준 출력과 동일한 파일에 오류를 출력하려면 사용해야합니다.

sbt clean test > log.log 2>&1

"2> & 1"은 표준 출력 결과와 같은 위치에 오류를 출력한다는 의미입니다.

다음과 같이 할 수도 있습니다 :

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

STDOUT을 log.log에 출력하고 STDERR을 error.log라는 두 번째 파일에 출력합니다 (분리하려는 경우).

커맨드 리다이렉터 오퍼레이터에 대해서는 이쪽을 봐주세요

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


3
2>&1답변과 1<&2링크 의 차이점은 무엇입니까 ? 나는 항상 당신의 길을 보았고 다른 방법도 의미가 있습니다 ( "출력"대신 "입력"을 리디렉션하지만 다른 방식으로 동일하게 나타남). 두 번째 선택을 보는 것은 흥미 롭습니다.
Joe

6
semantics ... 2>&1는 STDERR의 출력이 STDOUT과 동일한 출력으로 경로 재 지정되어야한다고 말합니다. 1<&2STDERR의 출력을 STDOUT의 입력으로 사용해야한다고 말합니다. 둘 다 동일한 결과를 낳고 단순히 선호의 문제입니다
SeanC

그것을 참고 삽입해야 2>&1 > log.log .
smwikipedia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.