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中用sleep()方法操作时间的教程
May 22 Python
通过源码分析Python中的切片赋值
May 08 Python
python实现猜单词小游戏
May 22 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
python给微信好友定时推送消息的示例
Feb 20 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
python logging设置level失败的解决方法
Feb 19 Python
Python远程方法调用实现过程解析
Jul 28 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php抓即时股票信息
2006/10/09 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
php的一些小问题
2010/07/03 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
浅析Ajax语法
2016/12/05 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python得到电脑的开机时间方法
2018/10/15 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
护理学专业推荐信
2013/12/03 职场文书
怎么写自荐书范文
2014/02/12 职场文书
英语老师推荐信
2014/02/26 职场文书
护理专业自荐信范文
2014/02/26 职场文书
项目施工员岗位职责
2014/03/09 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
世博会口号
2014/06/20 职场文书
电话客服工作职责
2014/07/27 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python