Java中重定向输出流实现用文件记录程序日志


Posted in Python onJune 12, 2015

System中的out,error都是final类型的,不能做改动。但通过setOut()可以设置新的输出流,从而实现写日志的功能。

import java.io.PrintStream; 
import java.io.FileNotFoundException; 
public class RedirectOutputStream { 
  public static void main(String arg[]){ 
    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();} 
  } 
}

日志如下:

年龄变量成功定义,初始值为:18 
性别变量成功定义,初始值为:女 
整合两个变量为info字符串变量,其结果为这个是女孩子,应该有18岁 

总结:

该方法中保存了System类的out成员变量为临时变量,然后创建新的文件输出流,并把这个输出流设置为System类的新是输出流。并将持续的调试信息输出到日志中去。主要方法:

1. setOut()方法: 重新分配System类的标准输出流。
2. setErr()方法:  重新分配System类的标准错误输出流。
3. setIn()方法:    重新分配System类的标准输入流。

Python 相关文章推荐
python之模拟鼠标键盘动作具体实现
Dec 30 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
python实现可视化动态CPU性能监控
Jun 21 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
Python csv模块使用方法代码实例
Aug 29 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python selenium循环登陆网站的实现
Nov 04 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 Python
Python2中的raw_input() 与 input()
Jun 12 #Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 #Python
Python3中的2to3转换工具使用示例
Jun 12 #Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 #Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 #Python
Python 3.x 新特性及10大变化
Jun 12 #Python
Python实现比较两个列表(list)范围
Jun 12 #Python
You might like
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python 模拟登陆github的示例
2020/12/04 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
作文批改评语大全
2014/04/23 职场文书
整改通知书
2015/04/20 职场文书
担保贷款承诺书
2015/04/30 职场文书
红色革命电影观后感
2015/06/18 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
Golang 对es的操作实例
2022/04/20 Golang