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();
    	   }
       }
}

控制台运行结果图

日志文件内容

猜你喜欢

转载自blog.csdn.net/qq_40843903/article/details/83628297
今日推荐