2010-12-10 61 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这样的记录器库。它将允许您仅通过更改配置文件来更改日志目标(日志文件或控制台)。

相关问题