it-source

Java 프로그램콘솔 출력을 여러 파일로 리다이렉트하려면 어떻게 해야 합니까?

criticalcode 2022. 11. 29. 21:44
반응형

Java 프로그램콘솔 출력을 여러 파일로 리다이렉트하려면 어떻게 해야 합니까?

이클립스 콘솔 출력을 파일로 리디렉션하려면 어떻게 해야 합니까?나는 다음을 할 수 있다.

  1. Run Configuration->Commons->Select a file.
  2. 사용하다System.setOut(PrintStream)그리고.System.setErr(PrintStream).

1)의 문제는 콘솔 출력을 하나의 파일이 아닌 다른 파일에 기록해야 한다는 것입니다.

2)의 문제는 다음과 같이 생성된 콘솔 출력만 저장한다는 것입니다.System.out.println()또는 예외가 발생한 스택 트레이스.log4j 경고 등 다른 종류의 출력은 캡처하지 않습니다.

콘솔 출력을 다른 파일로 프로그래밍 방식으로 리디렉션하려면 어떻게 해야 합니까?

as 실행 및 선택Run Configurations->Common[ Standard Input and Output ](표준 입출력)에서 [File](파일)을 선택할 수도 있습니다.

출력 파일명에 「변수」를 사용할 수 있습니다.다음은 예를 제시하겠습니다.

/tmp/FetchBlock-${current_date}.txt

current_date:

yyyy 형식으로 현재 시스템 시간을 반환합니다.MMdd_HHMM.선택적 인수를 사용하여 대체 형식을 제공할 수 있습니다.인수는 java.util의 유효한 패턴이어야 합니다.SimpleDateFormat.

또는 system_property 또는 env_var를 사용하여 다이내믹한 것을 지정할 수도 있습니다(둘 중 하나를 인수로 지정해야 합니다).

System의 출력을 설정할 수 있습니다.다음을 수행하여 프로그래밍 방식으로 출력합니다.

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));

편집:

이 솔루션의 기반이 되는 것은PrintStream, autoFlush 를 유효하게 할 수 있습니다만, docs 에 의하면 다음과 같습니다.

자동 플러시 - 부울입니다.참일 경우 출력 버퍼는 바이트 배열이 기록되거나 println 메서드 중 하나가 호출되거나 줄 바꿈 문자 또는 바이트('\n')가 기록될 때마다 플러시됩니다.

새 행이 작성되지 않은 경우 잊지 말고System.out.flush()수동으로 조작할 수 있습니다.

(Robert Tupelo-Schneck 감사합니다)

문제를 해결하기 위해 ${string_prompt} 변수를 사용합니다.응용 프로그램이 실행될 때 입력 대화 상자가 표시됩니다.그 대화 상자에서 수동으로 날짜/시간을 설정할 수 있습니다.

  1. 파일 경로 끝에 커서를 이동합니다.여기에 이미지 설명 입력

  2. 변수를 클릭하고 string_prompt를 선택합니다.

  3. 적용 및 실행을 선택합니다.실행

시스템 클래스의 변수를 다음과 같이 설정함으로써 이를 수행할 수 있습니다.

System.setOut (new PrintStream (new FileOutputStream("출력 파일 경로"))).또한 'Out'(시스템)을 닫거나 플러시해야 합니다.out.close() 또는 System.out.flush() 변수를 지정하면 출력 누락이 발생하지 않습니다.

출처 : http://xmodulo.com/how-to-save-console-output-to-file-in-eclipse.html

언급URL : https://stackoverflow.com/questions/5714053/how-can-we-redirect-a-java-program-console-output-to-multiple-files

반응형