将所有System.out写入文件

时间:2014-01-02 18:15:02

标签: java logging java.util.logging system.out

我有一个大型程序,我在其中使用System.out进行调试。但我希望能够将所有System.out同时记录到一个文件中,所以即使我的程序没有在控制台中运行,所有System.out都会写入文件,我将能够看到它程序运行或以后的任何时刻。

顺便说一句,抓取所有程序并使用记录器而不是System.out语句是不明智的!

我尝试java -jar myjar.jar > sysout.txt但它没有记录java logger实用程序记录的异常。

2 个答案:

答案 0 :(得分:5)

System.setOut(PrintStream)怎么样?您可以在程序的初始化部分插入此调用(启动)。

以前是一个提交:

当然,您可以使用System.err执行相同操作 - 即System.setErr(PrintStream),但最好使用不同的文件流。

详细假设自动刷新追加和缓冲的文件流:

    String file = ...;
    PrintStream ps = 
      new PrintStream(true, new BufferedOutputStream(new FileOutputStream(file, true)));
    System.setOut(ps);

答案 1 :(得分:4)

正常重定向command_name args > output仅重定向标准输出。它不会重定向标准错误流,通常会记录错误。要将两个流输出到同一个文件,请使用

command args &> filename

例如。 java -jar myjar.jar &> sysout.txt

要重定向到不同的文件,请使用

command args 1> output_file 2> error_file

例如。 java -jar myjar.jar 1> sysout.txt 2> errout.txt

http://www.tldp.org/LDP/abs/html/io-redirection.html

查看更多选项