我们正在使用Eclipe,Selenium,testng和java。有很多代码 System.out.println()语句(几百甚至几千)。所有这些输出都进入控制台(别人给我们留下了这个)。我们真的想把输出放到日志文件中。
我这样做了(outputLogFile的值在使用时设置在某处)
java.io.PrintStream myout = null;
...
myout = new java.io.PrintStream( new java.io.FileOutputStream( outputLogFile));
System.out.println( "*** Logs will go to " + outputLogFile);
System.setOut(myout);;
(有适当的尝试/捕获等,我只是没有列出所有内容。
这很有效。问题:输出不再进入控制台。
有没有办法将输出从System.out.println()拆分为两个,以便它同时转到控制台和日志文件?
或者,在测试结束时有没有办法将所有内容从控制台复制到日志文件?感谢
答案 0 :(得分:0)
创建一个扩展PrintStream
的类来保存原始的System.out,然后你可以在那里写一个文件。
MyPrintStream newOut = MyPrintStream(System.out, "somefile.log");
System.setOut(newOut);
答案 1 :(得分:0)
你是如何调用测试的?如果您从控制台运行命令,则只需从命令行重定向输出,而不是更改代码。例如,'tee' Linux中的命令完全符合您的要求:
./my_test_script | tee logfile.txt
这将打印' my_test_script'的输出。到控制台以及logfile.txt。