Java重定向输出输入错误流实现程序日志

调用系统类中的放样()方法改变输出流

放样方法

用于重新分配系统类的标准输出流

声明方法如下:

public static void setOut(PrintStreaam out)

实例1:创建RedirectOutputStream类,编写该类的主要主方法,在该方法中保存系统类的出成员变量为临时变量,然后创建一个新的文件输出流,并把这个输出流设置为系统类新的输出流。在程序关键位置输出调试信息,这些调试信息将通过新的输出流保存到日志文件中。最后恢复原有输出流,并输出程序运行结束信息。

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);
    		   String name = "伊莉雅";
    		   System.out.println("姓名变量定义成功,初始值为伊莉雅。");	   
    		   int age = 12 ;
    		   System.out.println("年龄变量定义成功,初始值为12");
    		   String sex = "女";
    		   System.out.println("性别变量定义成功,初始值为女");
    		   String info = "这是个"+sex+"孩子,"+"名字叫"+name+",应该有"+age+"岁了。";
    		   System.out.println("整合3个变量为info字符串变量,其结果为:"+info);
    		   System.setOut(out);
    		   System.out.println("程序运行完毕。请查看日志文件。");
    	   } catch (FileNotFoundException e) {
    		   e.printStackTrace();
    	   }
       }
}

编译情况

控制台运行结果

日志文件内容

 

setErr方法

用于重新分配系统类的标准错误输出流

声明方法如下:

public static void setErr(PrintStreaam err)

实例2增加重定向标准错误输出流

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);
    		   String name = "伊莉雅";
    		   System.out.println("姓名变量定义成功,初始值为伊莉雅。");	   
    		   int age = 12 ;
    		   System.out.println("年龄变量定义成功,初始值为12");
    		   String sex = "女";
    		   System.out.println("性别变量定义成功,初始值为女");
    		   String info = "这是个"+sex+"孩子,"+"名字叫"+name+",应该有"+age+"岁了。";
    		   System.out.println("整合3个变量为info字符串变量,其结果为:"+info);
    		   System.setOut(out);
    		   System.out.println("程序执行完毕,请查看工作目录下的log.txt");
    		   //重定向标准错误输出
    		   PrintStream errstream=System.err;
               PrintStream errprint=new PrintStream("./err.txt");
               System.setErr(errprint);
               String news="警告:错误信息出现";
               System.err.println(news);
               System.setErr(errstream);
               System.err.println("程序执行完毕,请查看工作目录下的err.txt");
   
    	   } catch (FileNotFoundException e) {
    		   e.printStackTrace();
    	   }
       }
}

控制台运行结果图

日志文件内容

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香自寒来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值