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 random模块常用方法
Nov 03 Python
Python合并多个装饰器小技巧
Apr 28 Python
Python记录详细调用堆栈日志的方法
May 05 Python
Python3使用requests发闪存的方法
May 11 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python3 mmh3安装及使用方法
Oct 09 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
pytorch中index_select()的用法详解
Jan 06 Python
python numpy中multiply与*及matul 的区别说明
May 26 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
php变量范围介绍
2012/10/15 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
range 标准化之获取
2011/08/28 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
小区门卫管理制度
2014/01/29 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
毕业生自荐书
2014/02/02 职场文书
卫生安全检查制度
2014/02/04 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
乒乓球比赛通知
2015/04/27 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏