我目前正在编写一个使用BufferedWriter生成多个日志文件的应用程序。但是,在调试时,我想写入System.out而不是文件。我想我可以改变:
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构造函数中的Object以从文件重定向到Standard out。因为我有几个日志文件,我将写入,使用System.out无处不在,并且将输出更改为文件实际上不是一个选项。
答案 0 :(得分:37)
您的方法确实有效,您只是忘记刷新输出:
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();
}
OutputStreamWriter
和PrintWriter
都是Writer
个实例,因此您可以执行以下操作:
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
或者其他什么,它只是给你一个想法..
答案 1 :(得分:2)
由于您提到这是用于日志记录,您可能希望查看使用log4j之类的记录器库。它允许您通过仅更改配置文件来更改日志目标(日志文件或控制台)。