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对文件操作知识汇总
May 15 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
redis之django-redis的简单缓存使用
Jun 07 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
一百多行python代码实现抢票助手
Sep 25 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
php缓存技术详细总结
2013/08/07 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
javascript中简单的进制转换代码实例
2013/10/26 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python操作xml文件详细介绍
2014/06/09 Python
理解Python中的With语句
2016/03/18 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Django url 路由匹配过程详解
2021/01/22 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
农林环境专业求职信
2014/03/13 职场文书
安全横幅标语
2014/06/09 职场文书
企业百日安全活动总结
2015/05/07 职场文书
网聊搭讪开场白
2015/05/28 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python