2010-12-10 45 views
18

我目前正在編寫使用BufferedWriter生成多個日誌文件的應用程序。然而,在調試時,我想寫入System.out而不是文件。我想我可以改變的:如何使用BufferedWriter寫入標準輸出

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

到:

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

,而不是:

System.out.println("log output") 

OutputStreamWriter選項尚未雖然工作。如何更改BufferedWriter構造函數中的對象以將文件重定向到標準輸出。因爲我有幾個日誌文件,我將寫入,在任何地方使用System.out並將輸出更改爲文件不是真正的選項。

回答

28

你的方法做工作,你只是忘記刷新輸出:

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(); 
} 

兩個OutputStreamWriterPrintWriterWriter情況下,所以你可以這樣做:

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 

或什麼,它只是給你的想法..

2

既然你提到這是爲了記錄,你可能想看看使用像log4j這樣的記錄器庫。它將允許您僅通過更改配置文件來更改日誌目標(日誌文件或控制檯)。

相關問題