[java] Java 프로그램 콘솔 출력을 여러 파일로 어떻게 리디렉션 할 수 있습니까?

이클립스 콘솔 출력을 파일로 어떻게 리디렉션 할 수 있습니까? 저 할 수 있어요:

  1. Run Configuration-> Commons-> Select a file.
  2. System.setOut(PrintStream)및을 사용하십시오 System.setErr(PrintStream).

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

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

프로그래밍 방식으로 콘솔 출력을 다른 파일로 리디렉션하는 방법은 무엇입니까?



답변

다음으로 실행으로 이동하여 Run Configurations->를 선택 Common하고 표준 입력 및 출력에서 ​​파일을 선택할 수도 있습니다.


답변

출력 파일 이름 안에 “변수”를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/tmp/FetchBlock-${current_date}.txt

current_date :

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

또는 system_property 또는 env_var를 사용하여 동적으로 무언가를 지정할 수도 있습니다 (둘 중 하나를 인수로 지정해야 함)


답변

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

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

편집하다:

이 솔루션은 기반으로한다는 사실로 인해 PrintStream, 우리는에 따라의 autoflush을 가능하게 할 수 있지만, 문서 :

autoFlush-부울; true 인 경우 바이트 배열이 작성되거나 println 메소드 중 하나가 호출되거나 개행 문자 또는 바이트 ( ‘\ n’)가 작성 될 때마다 출력 버퍼가 플러시됩니다.

따라서 새 줄이 작성되지 않으면 System.out.flush()수동으로 기억하십시오 .

(감사합니다 Robert Tupelo-Schneck)


답변

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

  1. 파일 경로의 끝에서 커서를 이동하십시오.
    여기에 이미지 설명을 입력하십시오

  2. 변수를 클릭하고 string_prompt를 선택하십시오.
    여기에 이미지 설명을 입력하십시오

  3. 적용 및 실행을 선택하십시오.
    여기에 이미지 설명을 입력하십시오
    여기에 이미지 설명을 입력하십시오


답변

다음과 같은 방법으로 System 클래스의 변수를 설정하여이를 수행 할 수 있습니다

System.setOut (new PrintStream (새 FileOutputStream ( “출력 파일 경로”))). 또한 일부 출력이 누락되지 않도록 ‘out'(System.out.close () 또는 System.out.flush ()) 변수를 닫거나 플러시해야합니다.

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


답변