PrintStream out = new PrintStream(new FileOutputStream("test2_output.txt"));
System.setOut(out);
以上代码不是正确的代码。我要求上面的文件应包含控制台中生成的错误消息。那么从控制台获取错误消息并将该消息复制到文件中的代码是什么。
答案 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值。
我想补充说,使用Log4j,Logback或标准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"来选择写入控制台和文件。复选框见: