2013-04-14 2 views
2

10 분마다 실행되는 Java 프로그램이 있습니다. 나는이 과정의 로그를 캡처 (예를 들어, 기본적으로 내 프로그램이 무엇을) 고려할 :이 경우 someFunction에서System.out을 리디렉션하고 기존 파일에 추가

public static void someFunction() 
{ 
    System.setOut(new PrintStream(LOG_DIR)); 
    System.out.append("whatever I am appending about my program") 
} 

는 10 분마다 main에서 호출됩니다. 그러나 항상 LOG_DIR으로 지정된 파일을 덮어 씁니다. 나는 이것이 단지 새로운 파일을 만들고 이전에 파일에 있던 내용을 저장하기 때문에 이것이라고 생각한다. LOG_DIR. 따라서 파일 끝에 추가하려는 시도는 불필요합니다.

  1. 10 분마다 함수를 호출 할 때 내 프로그램이 파일의 끝에 쓸 수 있습니까?
+0

로깅 프레임 워크를 사용하십시오. 또는 ['FileOutputStream'] (http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream (java.io.File, % 20boolean))을 사용하십시오. –

답변

4

최상의 솔루션은 기존의 여러 로깅 프레임 워크 중 하나를 활용하는 것입니다. 당신이 당신의 자신의 압연 주장하는 경우 덮어 쓰기에 반대하지만, 당신은 출력 파일에 추가해야합니다

System.setOut(new PrintStream(new FileOutputStream(LOG_DIR, true))); 

FileOutputStream에 부울 인수는,이 스트림이 에서 열 것을 지정 모드를 추가하십시오.

2

은 간단히 다음과 같이, append mode에서 로그 파일을 엽니 다

System.setOut(new PrintStream(new FileOutputStream(LOG_DIR, true))); 

그것은 지정된 File 객체가 나타내는 파일에 기입하기위한 파일 출력 스트림을 작성합니다. 2 번째의 인수가 true의 경우, 바이트는 파일의 선두가 아니고 파일의 말미에 기입 해집니다. 이 파일 연결을 나타 내기 위해 새 FileDescriptor 객체가 만들어집니다.

관련 문제