我目前正在编写一个使用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构造函数中的对象从文件重定向到标准输出。因为我有几个要写入的日志文件,所以在任何地方使用System.out并将输出更改为文件并不是一个真正的选择。
发布于 2010-12-10 10:21:24
你的方法是有效的,你只是忘记了刷新输出:
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
或者别的什么,它只是给你一个想法..
发布于 2010-12-10 12:07:12
既然您提到这是用于日志记录的,那么您可能需要考虑使用像log4j这样的记录器库。它允许您通过仅在配置文件中进行更改来更改日志目标(日志文件或控制台)。
https://stackoverflow.com/questions/4405078
复制相似问题