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


161

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

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

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

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

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


1) 아마 당신은 사용 "변수 .."이 shoude (예) C : \ 테스트 $ {??? : ??} TXT.
cloverink

2
여기 아이디어가 있습니다. 임의의 고유 한 값을 변수 ( ${NAME})에 할당하는 자신 만의 이클립스 플러그인 (예 : cusotm 버튼)을 작성 하고 실행과 동일한 작업을 수행하십시오. 그런 다음 $NAME출력 파일의 값으로 사용 하십시오. 아마도?
하나 둘 셋

답변:


176

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


106
나는 40 명의 사람들이 질문의 두 번째 줄에서 복사-붙여 넣기를 찬성하는 것이 절대적으로 재미 있다는 것을 안다.
AnthonyW

13
@AnthonyW 나는 이것이 주로 사람들이 여기에서 "이클립스 출력을 파일로 리디렉션하는 방법"이라는 제목의 질문에 이끌 리기 때문이라고 생각합니다. 이 답변은 실제로 제목 질문에 대한 답변입니다.
Gerome Bochmann

1
Eclipse 4.4 (루나)를 사용하여 "실행 구성"을 찾을 수없는 경우 서버 탭에서 서버를 두 번 클릭하여 실행 구성을 열고 "lanuch 구성 열기"를 클릭 한 다음 공통 탭으로 이동하십시오. . 이 대화 상자의 하단에는 "표준 입력 및 출력"이라는 섹션이 있습니다. 여기에서 File을 클릭하고 파일 이름을 지정할 수 있습니다.
Guy Schalnat이

1
힌트 : 터미널을 열고 echo $TTY파일로 반환되는 내용을 지정하십시오. 그러면 터미널은 Eclipse 콘솔에있는 내용을 미러링합니다.
Sridhar Sarnobat

2
뭐? 질문자의 질문을주의 깊게 읽으면이 답변이 잘못되었습니다.
ComputerScientist

11

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

/tmp/FetchBlock-${current_date}.txt

current_date :

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

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


8

다음을 수행하여 프로그래밍 방식으로 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)


1
System.out.flush()일부 출력이 누락되지 않도록 닫으십시오 .
Robert Tupelo-Schneck 15.23에

1

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

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

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

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


0

다음과 같은 방법으로 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

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