PrintStream类的学习与多目的地输出重定向问题

本文介绍了在开发Dodo工具箱时,为实现日志功能而设计的简单日志处理模块。作者面对输出重定向的挑战,通过创建名为IORedirect的PrintStream子类,实现了将错误信息同时输出到控制台、日志文件和GUI窗口。通过实例展示了如何使用IORedirect进行多目的地重定向。
摘要由CSDN通过智能技术生成

最近开发的Dodo工具箱中需要一个日志功能,当然现在已经有很成熟很好用的Log4j,但是我觉得作为一个菜鸟,有必要自己开发一个简单的日志处理模块。下面简介该模块的设计与输出重定向这个难点。

用例设计:


类设计:


实现难点——输出重定向:

        我是这样设想的,日志来源于三个方面 1其他模块使用Logger记录的日志信息 2 系统执行过程中需要输出的信息 3 系统在运行过程中碰到的错误信息。日志输出的目的也有三个地方,第一:控制台 第二:日志文件 第三:gui即时信息窗口。

        如果只是单目的地的重定向十分简单,比如说想把System.err的信息重定向到文件out,只需在系统启动时调用如下两行即可:

PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("out")));
System.setErr(out);
           

        现在的难点在于需要将错误信息输出到多个目的地(文件,控制台,gui窗口),没有一个适合的PrintStream的子类来完成这个任务,那么我们就需要继承PrintStream,并在这个子类中重新print方法来完成我们的输出逻辑,我定义的该类的名称为IORedirect,该类的源码如下:

package toolBox.core.utility;

import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Date;
import java.util.Vector;

import com.ibm.icu.text.SimpleDateFormat;

/**
 * The class pipelines print/println's to several PrintStream. Useful for
 * directing system.out and system.err to external files
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值