实例说明
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();
}
}
}
相关推荐
Java开发自学100天,Java开发必背代码 重定向输出流实现程序日志
主要介绍了Java中重定向输出流实现用文件记录程序日志,本文直接给出代码实例,并对代码做了详细注解,需要的朋友可以参考下
非常的不方便,所以做了个日志输出的重定向到屏幕上 为了图方便,用了UGUI做输出显示 支持做了简单的颜色区分和时间显示,并且会自动拦截全局的未catch的exception信息 提供了显示隐藏和屏蔽滑动的功能(用于...
实例013 重定向输出流实现程序日志 实例014 自动类型转换与强制类型转换 实例015 加密可以这样简单(位运算) 实例016 用三元运算符判断奇数和偶数 . 实例017 不用乘法运算符实现2×16 实例018 实现两个变量的...
实例013 重定向输出流实现程序日志 17 实例014 自动类型转换与强制类型转换 19 实例015 加密可以这样简单(位运算) 20 实例016 用三元运算符判断奇数和偶数 21 实例017 不用乘法运算符实现2×16 22 实例018 实现两...
python 打印信息重定向 GUI界面 ,PyQt5实时显示调用外部程序的实时输出显示,subprocess.Popen stdout输出重定向,备注详细!
实例021 重定向输出流实现程序日志 31 实例022 自动类型转换与强制类型转换 33 2.2 运算符 34 实例023 加密可以这样简单(位运算) 34 实例024 用三元运算符判断奇数和偶数 35 实例025 更精确地使用浮点数 35 实例...
- 重定向NSLog输出日志到文件中,这样你就不用替换到你项目中已有的NSLog()代码啦。 - 重定向程序奔溃日志到文件中。 - 自动根据当前设备信息选择要不要记录日志的同时把日志打印到控制台。 - 方便增删改查当前...
输出到控制台,并且写入日志文件: 执行脚本,会在当前目录下生成 log20190826.log文件,打开它发现成功写入日志信息: 脚本代码: #!/bin/bash #文件名:test.sh name=xiongzaiqiren echo $name echo BACKUP ...
在Qt4是qInstallMsgHandler,Qt5里边是qInstallMessageHandler,有了这个神器,只要在你的项目中所有qdebug qinfo等输出的日志信息,都会重定向接收到,网上大部分人写的demo都是接收到输出打印日志存储到文本文件,...
下面是实现的代码,可以将输出到串口的日志信息,重定向到当前的telnet或者ssh界面上,是不是很神奇! 实现代码 #include #include #include #include #include #include int main(int argc, char *argv[]) { i
可以重定向输出(并且支持Rotation) 可以自动守护封装了的服务,程序挂掉了后可以自动重启 可以自定义环境变量 这里面的每一个功能都非常实用,使用NSSM来封装服务可以大大简化我们的开发流程了。 开发的时候...
可以重定向输出(并且支持Rotation) 可以自动守护封装了的服务,程序挂掉了后可以自动重启 可以自定义环境变量 这里面的每一个功能都非常实用,使用NSSM来封装服务可以大大简化我们的开发流程了。 开发的时候是一个...
很多时候在Linux系统下运行python程序时,控制台会输出一些有用的信息。为了方便保存这些信息,有时需要对这些信息进行保存。这里介绍几种将控制台输出保存到文件中的方式: 1 重定向标准输出流 重定向标准输出流有...
某项目中使用python脚本方式将日志文件中的数据持续的转换格式输出到另一文件中以供其他日志分析应用使用。但是当后台运行采取重定向方式输出到某一文件时,发现并没有内容输出,命令如下: python xxx.py > xxx....
在Objective-c开发程序的时候,有专门的日志操作类NSLog,它将指定的输出,输出到(stderr),我们可以利用Xcode的日志输出窗口,下面这篇文章主要给大家介绍了关于iOS中日志同步获取NSLog重定向以及其他的相关资料,需要...