[英]Java console output - File And to Console BOTH
可能这个线程是重复的,但有人可以指导吗? 我想将 java 程序 output 同时写入控制台和文件。 我知道我可以使用这段代码将 output 发送到控制台
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.setOut(fileStdout);
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
}
System.out.println("==============");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
但是如何将 output 保存在控制台和文件中?
PS:没有在文件中寻找我 output 并在不同线程中显示控制台的选项。
从Apache Commons IO 中查找 TeeOutputStream TeeOutputStream
不要调用 System.setOut(),只需调用两次即可打印。 它不是很优雅,但您可以创建一个输出到两者的方法。
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
fileStdout.println("" + i);
}
System.out.println("==============");
fileStdout.println("" + i);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
如果您在 unix 盒子上运行,您也可以使用tee
命令,只要所有内容都打印到标准输出。 你会像这样运行你的程序:
java MyClass | tee testlogger.txt
然后打印到标准输出的所有内容都进入文件和控制台。
当你运行你的程序时
java {JVM 的标志} ClassName {你的类的参数} > output.txt 2> error.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.