如何复制(读取)System.out内容?

goas 2014-11-20 04:41:01
我要获取全部的System.out的全部输出

由于logback配置有些复杂,日志文件中有些是不打印的,只打到控制台.
我现在需要一个场景: 把logback打出到控制台的一部分日志抽出来,另外保存下来,做实时分析

而且要把 保存下来的内容展示到网页中....
(类似于 web方式查看tomcat的日志)
我目前的方案:获取全部的System.out的全部输出
			 
System.setOut(new SaveStream(System.out));
System.setErr(new SaveStream(System.out));

class SaveStream extends PrintStream{
static byte[] buff=new byte[1024*10]; // 10KB内容
int index=0;
public SaveStream(OutputStream out) {
super(out);
}
public void write(byte[]buf, int off,int len) {
super.write(buf, off, len);

for(int i=0;i<off&&i<buff.length;i++)
{
buff[i]=buf[i];
}

}

目前以10KB一个缓冲,实时读取,
结果全是\0

求大虾......
好久不写代码....已经不会了...
...全文
198 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyc_ 2014-11-20
  • 打赏
  • 举报
回复
用FilterOutputStream实现吧,它允许在流输出前对流进行操作。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧