将java的console日志写入文件
2014-05-18 12:36
411 查看
FileOutputStream bos = new FileOutputStream("output.txt");
System.setOut(new PrintStream(bos));
System.out.println("output to output.txt");这样,console的输出全部写入文件output.txt,但是控制台不会有输出信息。
如果希望控制台也有输出:
新建一个继承java.io.OutputStream的类,实现多输出方式
这样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
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的console日志写入文件
- 将java console的输出写入文件
- 将java console的输出写入文件
- Java中按照行读取和写入文件 日志常用操作 解决中文乱码问题
- java写入日志文件
- 将java console的输出写入文件
- Java-写入日志到指定的文件
- Java, 将文件对像写入BLOB字段
- java 写入文件方法
- 设置Log4j 的properties文件,将日志写入数据库
- 用java从网络上抓取HTML文件内容并写入本地文本中
- 日志文件满而造成SQL数据库无法写入
- java 读取和写入properties文件
- 显示指定的错误页面,同时把错误信息写入系统日志文件
- log4net 将不同级别的信息写入不同的日志文件
- Java实现文件的读取、写入、复制、修改、移动等操作
- S60中日志文件写入函数
- 数据库操作异常写入日志文件
- 遍历文件和文件夹,并用滚动条显示进度和写入错误日志
- java写入文件时庄和薛字的问题