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抓取网页时字符集转换问题处理方案分享
Jun 19 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
使用django实现一个代码发布系统
Jul 18 Python
解决Python对齐文本字符串问题
Aug 28 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
Python 可迭代对象 iterable的具体使用
Aug 07 Python
微信小程序调用python模型
Apr 21 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
基于mysql的论坛(5)
2006/10/09 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
关于Java finally的面试题
2016/04/27 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
局火灾防控工作方案
2014/05/25 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
写给女朋友的保证书
2015/05/09 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
opencv检测动态物体的实现
2021/07/21 Python