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中的生成器和yield详细介绍
Jan 09 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Python命令行解析模块详解
Feb 01 Python
基于python实现名片管理系统
Nov 30 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python用字典构建多级菜单功能
Jul 11 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
Python如何实现邮件功能
May 27 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 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 Ajax乱码
2008/04/09 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python实现的生成word文档功能示例
2019/08/23 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
小学端午节活动方案
2014/03/13 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
Go Plugins插件的实现方式
2021/08/07 Golang