Java控制台输出 - 文件和控制台BOTH
问题描述:
大概这个线程是duplicate,但有人可以指导?我想同时将java程序输出写入控制台和文件。我知道,我可以给输出,这段代码Java控制台输出 - 文件和控制台BOTH
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();
}
然而,如何使输出的控制台和文件,以及安慰?
P.S: 不寻找一个选项,我在文件中输出并在不同的线程显示控制台。
答
不要调用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} {类名参数类}> output.txt的2> error.txt
应该看看[log4j的(HTTP: //logging.apache.org/log4j/1.2/manual.html) – mre 2011-04-29 22:05:20