[转]将java的console日志写入文件
2015-09-23 15:14
232 查看
FileOutputStream bos = new FileOutputStream("output.txt"); System.setOut(new PrintStream(bos)); System.out.println("output to output.txt");这样,console的输出全部写入文件output.txt,但是控制台不会有输出信息。
如果希望控制台也有输出:
新建一个继承java.io.OutputStream的类,实现多输出方式
import java.io.IOException; import java.io.OutputStream; public class MultiOutputStream extends OutputStream { OutputStream outputStream1,outputStream2; public MultiOutputStream(OutputStream stream1, OutputStream stream2 ) throws IOException{ outputStream1 = stream1; outputStream2 = stream2; } @Override public void write(int b) throws IOException { // TODO Auto-generated method stub outputStream1.write(b); outputStream2.write(b); } } 再调用该类的对象 import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; class Out2File { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub PrintStream oldPrintStream = System.out; FileOutputStream bos = new FileOutputStream("output.txt"); MultiOutputStream multi = new MultiOutputStream(new PrintStream(bos),oldPrintStream); System.setOut(new PrintStream(multi)); System.out.println("test"); } }
这样console和文件中都会有输出
1、要解决console和文件同时输出的问题还需要自己实现一个OutputStream,让OutputStream能同时写入多个输出.
首先继承java.io.OutputStream,然后实现public abstract void write(int b) throws IOException; 并且覆写java.io.OutputStream中的其他的方法,具体的实现方式按照自己的需求来做,这里就不做出具体的实现了.
通过实现自己实现OutputStream之后,
在
PrintStream printStreamOut = new PrintStream(outputStreamOut);
PrintStream printStreamErr = new PrintStream(outputStreamErr);
中分别把outputStreamOut和outputStreamErr对象换成自己实现的OutputStream对象,这样就可以实现在一个OutputStream对象中进行多个输出操作.
按照以上的思路进行的实现,可以完全把控制台的所有的输出写入到日志文件中,包括System.out.println这样的输出.
ref:http://jianshusoft.blog.51cto.com/2380869/769913
相关文章推荐
- java log4j日志 写入数据库
- struts2开发-validate-表单验证案例2
- Java中getResourceAsStream的用法
- 使用Struts的Token机制解决表单的重复提交
- java学习笔记:使用zip api进行文件解压缩以及不解压直接读取指定文件内容
- Java中static作用详解
- Java 设计模式——工场模式(Factory method)
- java + selenium测试框架(之上传)
- 如何让你的编码速度更高-MyEclipse快捷键配置
- Eclipse启动时提示An error has occurred.See the log file D:\eclipse\configuration\...
- java类加载器总结
- Java编程:比对两个文本文件,标记相同和不同之处
- 对于java中clone()函数的理解
- JAVA问题总结之26-异常处理
- SpringMVC接收数组请求参数小技巧
- spring自定义事件监听
- 我叒玩坏eclipse以后决定把问题记录下来了
- Java之旅Struts系列(2)——Struts1(精华)
- Java 7 中 NIO.2 的使用——第一节 Path 类的使用
- 生产者消费者问题(thinking in java 709 )