Java中重定向输出流实现用文件记录程序日志

yipeiwu_com5年前Python基础

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 scp 批量同步文件的实现方法

该脚本用于将源主机列表路径下的所有文件同步于目标主机的/tmp下面 #!/usr/bin/python # -*- coding:utf-8 -*- import pexpect...

python基于http下载视频或音频

一、简介 这里介绍使用python基于http下载视频或音频。 二、关键点 1、断点续传 视频或音频文件一般比较大,所以通过需要断点续传。方式通过在http的header里添加Range...

使用Python将字符串转换为格式化的日期时间字符串

我正在尝试将字符串“20091229050936”转换为“2009年12月29日(UTC)” >>>import time >>>s = time...

Windows10下Tensorflow2.0 安装及环境配置教程(图文)

Windows10下Tensorflow2.0 安装及环境配置教程(图文)

下载安装Anaconda 下载地址如下,根据所需版本下载 安装过程暂略(下次在安装时添加) 下载安装Pycharm 下载安装Pycharm,下载对应使用版本即可 如果你是在校学...

Python中列表的一些基本操作知识汇总

Python中列表的一些基本操作知识汇总

 Python最基本的数据结构是序列(列表/元组)。一个序列中的每个元素都分配有一个数字- 它的位置或索引。第一个索引是0,第二个索引是1,依此类推。 Python有6内置类型...