如何将错误消息从控制台复制到java中的文件?

时间:2014-12-02 05:10:25

标签: java eclipse

PrintStream out = new PrintStream(new FileOutputStream("test2_output.txt"));

System.setOut(out);

以上代码不是正确的代码。我要求上面的文件应包含控制台中生成的错误消息。那么从控制台获取错误消息并将该消息复制到文件中的代码是什么。

5 个答案:

答案 0 :(得分:0)

您可以将java标准和标准错误重定向到日志文件。事实上,这是Oracle(用户提交的博客)对您问题的回答:

https://blogs.oracle.com/nickstephen/entry/java_redirecting_system_out_and

答案 1 :(得分:0)

你需要做这样的事情:

PrintStream out = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(out);

第二个陈述是关键。它改变了所谓"最终"的价值。 System.out属性是提供的PrintStream值。


我想补充说,使用Log4jLogback或标准Java java.util.logging子系统等日志记录子系统通常更好。它们通过运行时配置文件提供细粒度的日志记录控制,支持滚动日志文件,提供系统日志记录。

或者,如果您正在做的事情不是"记录",那么请考虑:

  • 将标准输出重定向到命令行上的文件,或
  • 更改您的应用程序以使用作为参数传递的out流,而不是写入System.out

乱用(例如重定向)System.out可能会给JVM中的其他代码带来令人不快的意外,而这些代码并不期待这种情况发生。

答案 2 :(得分:0)

您可以将此代码称为生成记录器文件。 以下代码创建大小为1 Mb的文件。

        File dir1 = new File (".");
        String workingDir = dir1.getCanonicalPath();
        FileHandler hand = new FileHandler(workingDir+"\\LOGDATA.log",
        (1024*1024),3);
        Logger logger = Logger.getLogger("LOGDATA"); 
        SimpleFormatter formatter = new SimpleFormatter();  
        hand.setFormatter(formatter);
        logger.addHandler(hand);
        logger.info(workingDir+"\\LOGDATA.log");

输出:

 D:\LOGDATA.log

答案 3 :(得分:0)

使用System.setErr(out);

来源:JavaDoc

答案 4 :(得分:0)

关于在eclipse中启动app,可以通过选择" File"来选择写入控制台和文件。复选框见: eclipse settings