2010-12-10 3 views
18

현재 BufferedWriter를 사용하여 여러 로그 파일을 생성하는 응용 프로그램을 작성 중입니다. 그러나 디버깅하는 동안 파일 대신 System.out에 쓰려고합니다. BufferedWriter를 사용하여 표준 출력에 쓰는 방법

System.out.println("log output") 

새로운 OutputStreamWriter 옵션

그래도 작동되지 않은 : 반대로

BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out)); 
log.write("Log output\n"); 

:

log = new BufferedWriter(new FileWriter(tokenizerLog)); 

에 : 나는에서 변경 될 수 있습니다 생각. BufferedWriter 생성자 내의 Object를 변경하여 파일에서 Standard로 리디렉션하는 방법은 무엇입니까? 필자는 쓸 로그 파일이 여러 개 있기 때문에 어디에서나 System.out을 사용하고 출력을 파일로 변경하는 것은 실제로 옵션이 아닙니다.

답변

28

귀하의 접근 방식은 작업, 당신은 단지 출력 플러시 잊고 수행합니다

BufferedWriter log; 

Writer openForFile(String fileName) { 
    if (fileName != null) 
    return new PrintWriter(fileName); 
    else 
    return new OutputStreamWriter(System.out); 
} 

log = new BufferedWriter(openForFile(null)); //stdout 
log = new BufferedWriter(openForFile("mylog.log")); // using a file 

이든 : 모두 OutputStreamWriterPrintWriter 방금 ​​뭔가를 할 수 Writer 인스턴스가

try {  
    BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out)); 

    log.write("This will be printed on stdout!\n"); 
    log.flush(); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

을 , 그것은 당신에게 아이디어를주는 것입니다 ..

2

로깅을위한 것이므로, log4j와 같은 로거 라이브러리. 구성 파일 만 변경하여 로그 대상 (로그 파일 또는 콘솔)을 변경할 수 있습니다.

관련 문제