您的位置:首页 > 其它

重定向输出流实现程序日志

2013-12-14 11:33 288 查看

实例说明

    System类中的out成员变量是java的标准输出流,程序通常用它来输出调试信息,out成员变量被定义为final类型的,无法直接重新复制,但是可以通过setOut()方法来设置新的输出流。本例通过该方法实现了输出流的重定向,把它指向一个文件输出流,从而实现了日志功能。程序运行后绘制控制台提示运行结束信息;但是在运行过程中的步骤保存到了日志文件中。

关键技术

    调用System类的setOut()方法改变了输出流,System类的out、err和in成员变量是final类型的,不能直接赋值,要通过相应的方法来改变流。
setOut()方法:重新分配System类的标准输出流,方法声明
Public static void setOut(PrintStream out); out:新的PrintStream输出流对象。
setErr()方法:重新分配System类的标准错误输出流,方法声明
Public static void setErr(PrintStream err); err:新的PrintStream输出流对象。
setIn()方法:重新设置System类的in成员变量,即标准输入流。

设计过程

    创建RedirectOutputStream类,编写给类的main()主方法,在该方法中保存System类的out成员变量为临时变量,然后创建一个新的文件输出流,并把这个文件输出流设置为System类新的输出流。在程序关键位置输出调试信息,这些调试信息将通过新的输出流保存到日志文件中。最后恢复原有输出流并输出程序运行结束信息,关键代码:
Import  java.io.FileNotFoundException;
Import java.io.PrintStream;
public class RedirectOutputStream(){
Public static void main(String[] args){
Try{
PrintStream out=System.out; //保存原输出流
PrintStream ps=new PrintStream(“./log.txt”); //创建文件输出流
System.setOut(ps); //设置使用新的输出流
Int age=18; //定义整形变量
System.out.println(“年龄变量成功定义,初始值为18”);
String sex=“女”;//定义字符串变量
System.out.println(“性别变量成功定义,初始值为女”);
//整合两个变量
String info=”这个是”+sex+“孩子,应该有”+age+“岁了!”;
System.out.println(“整合两个变量为info字符串变量,其结果是:”+info);
System.setOut(out); //恢复原有输出流
System.out.println(“程序运行完毕,请查看日志文件。”);
}catch(FileNotFoundException e){
e.printstackTrace();
}
}
}
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: