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 MySQLdb Windows下安装教程及问题解决方法
May 09 Python
Python实现文件按照日期命名的方法
Jul 09 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
TensorFlow实现Batch Normalization
Mar 08 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
python数字图像处理实现直方图与均衡化
May 04 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
Python基于gevent实现高并发代码实例
May 15 Python
python实现扫雷游戏的示例
Oct 20 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
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
JavaScript中的对象序列化介绍
2014/12/30 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Python装饰器使用示例及实际应用例子
2015/03/06 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
详解django.contirb.auth-认证
2018/07/16 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
家长会邀请书
2014/01/25 职场文书
合作协议书模板
2014/10/10 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书