将java输出打印到文件

时间:2011-04-17 18:01:07

标签: java

如何在一些文件中同时将Java输出打印到shell控制台?那可能吗?

5 个答案:

答案 0 :(得分:6)

您可以在程序开头包含以下行:

final PrintStream origout = System.out;
final PrintStream fileout = new PrintStream(file);
System.setOut(new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
        origout.write(b);
        fileout.write(b);
    }
}));

答案 1 :(得分:2)

您可以使用System.setOut()System.Out重定向到将其输出复制到控制台和文件的自定义OutputStream

答案 2 :(得分:0)

您可以写入控制台。并写入文件。你可以将它们单独分开,这样它们就不会相互依赖。

在我所知的同时,没有一个API可以同时执行这两个操作(不是说太多,写一个应该是微不足道的。)

编辑:我误解了吗?你的意思是从Java代码或只是将java二进制文件的输出传递给控制台和文件?在这种情况下,您可以执行以下操作:

java Main 2>&1 | tee -a Load.log

答案 3 :(得分:0)

您可以使用SLF4J实施此功能,例如Logback。这就是JBoss(默认情况下)将输出发送到控制台以及日志文件的方式。

答案 4 :(得分:0)

最简单的方法(因为它不涉及真正的编程)是在Linux,Mac OS X或Windows Powershell中使用 tee 命令,如下所示:

java MyProg | tee outputfile.txt

这适用于任何编程语言,而不仅仅是Java。