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代码检查工具pylint 让你的python更规范
Sep 05 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python入门教程之if语句的用法
May 14 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 Python
Python中tqdm的使用和例子
Sep 23 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
escape unescape的php下的实现方法
2007/04/27 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
Python文件去除注释的方法
2015/05/25 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
python中map()函数的使用方法示例
2017/09/29 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
营销与策划实训报告
2014/11/05 职场文书
党员剖析材料范文
2014/12/18 职场文书
投资意向协议书
2015/01/29 职场文书
民事答辩状范本
2015/05/21 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers