重定向输出流实现程序日志

实例说明:

  System类中的out成员变量是Java的标准输出流,程序中经常用他来输出调试信息。out成员变量被定义成final类型的,无法直接重新复制,但是可以通过setOut()方法来设置新的输出流。

 1 package com.zeone.lifeline.test;
 2
 3 import java.io.PrintStream;
 4
 5 public class RedirectOutputStream {
 6     public static void main(String[] args) {
 7         try {
 8             PrintStream out = System.out;
 9             PrintStream ps = new PrintStream("log.txt");
10             System.setOut(ps);
11             int age = 18;
12             System.out.println("年龄变量成功定义,初始值未18");
13             String sex = "女";
14             System.out.println("性别变量成功定义,初始值未女");
15             //整合两个变量
16             String info = "这是一个"+sex+"孩子,今年"+age+"岁了。";
17             System.out.println("整合两个变量为info字符串变量,其结果是:"+info);
18             System.setOut(out);
19             System.out.println("程序运行完毕,请查看日志文件。");
20         }catch(Exception e) {
21             e.printStackTrace();
22         }
23     }
24 }

程序输出:

技术要点:

  1、setOut:

    重新分配System类的标准输出流。

    方法声明:public static void setOut(PrintStream out)

    参数说明:out:新的PrintStream输出流对象

  2、setErr():

    重新分配System类的标准错误输出流。

    方法声明:public static void setErr(PrintStream err)

    参数说明:err:新的PrintStream输出流对象

  3、setIn():

    重新分配System类的in成员变量。

    方法声明:public static void setIn(PrintStream in)

    参数说明:in:新的PrintStream输出流对象

原文地址:https://www.cnblogs.com/JohnEricCheng/p/8434733.html

时间: 2024-10-11 06:34:27

重定向输出流实现程序日志的相关文章

实例 20 重定向输出流实现程序日志

java的文件输出流和c这类的文件比起来简直不是方便了一倍两倍啊. System类的setOut方法可以修改输出流. System类的out.err.in成员变量是final类的,不能直接赋值.要通过相应方法来改变流. setOut() 用于重新分配System类标准输出流 setErr() 重新分配System的标准错误输出流 setIn() 重新分配System类的标准输入流 package test; import java.io.FileNotFoundException; import

java重定向输出流实现程序日志

public class RedirectOutputStream {       public static void main(String[] args) {try {PrintStream out = System.out;                 //保存原输出流PrintStream ps = new PrintStream("/log.txt"); //创建文件输出流System.setOut(ps);                            //设

java笔记--重定向输出流实现程序输出到日志

重定向输出流实现程序输出到日志 利用System类中的setOut()方法,实现输出流的重定向,把它指向一个文件输出流,从而实现日志功能.即: 程序运行后绘制控制台提示运行结束信息,但是在运行过程中的步骤都保存到了日志文件中. 主要方法setOut(): 重新分配System类的标准输出流. public static void setOut(PrintStream out) out表示新的输出流对象 setErr() 重新分配System类的标准错误输出流. public static voi

重定向输出流练习 ToLog

public class ToLog { public static void main(String[] args) throws Exception { //准备日志文件 File f = new File("log.txt"); if(!f.exists()){ f.createNewFile(); } //设置输出流 PrintStream out = System.out; PrintStream ps = new PrintStream(f); System.setOut(

利用C#自带组件强壮程序日志

前言 在项目正式上线后,如果出现错误.异常.崩溃等情况, 我们往往第一想到的事就是查看日志. 所以日志对于一个系统的维护是非常重要的. 声明 本文中的示例代码旨在这个框架是怎么工作的,具体实现可以自由发挥. 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的log项目, 另一方面 一些log组件需要实例化后才可以使

C# 使用Log4Net记录程序日志

在之前的博客中,写过使用系统内置的Trace类记录程序日志,具体请参考:C# 使用Trace记录程序日志.这篇博客将介绍如何使用Log4Net记录程序日志. 首先需要引用Log4Net.dll,我们可以使用Visual Studio的NuGet来引入,也可以从官网上面下载.下面是一个简单的LogHelper类, using log4net; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace CommonLibra

程序日志--ios“文字长度--button与label的交互”程序

我的学习日志003:"文字长度--button与label的交互"程序 交代一下我做程序的工具:mac os x虚拟机10.9.3         Xcode6         百度^-^         参考书iPhone30天精通(本书已经过时,但是还有一定的参考价值,可以引导正确的学习方向). 没什么新的知识点,直接放步骤和代码. XCode新建SingleView程序,viewControllor.h代码如下: #import <UIKit/UIKit.h> #im

[转]利用C#自带组件强壮程序日志

利用C#自带组件强壮程序日志 在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 声明 正文中的代码只是一个栗子,一个非常简单的栗子,只是说明这个框架是怎么工作的 具体实现可以自由发挥~~~~ 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的

使用LogMaster4Net实现应用程序日志的集中管理

日志在软件系统中的重要性我在此也不赘述了,几乎所有程序员每天都会更日志打交道. 那么你是否曾今为这样的一些事情而困扰过: - 远程登录到不同的服务器,找到应用程序目然后查看应用日志: - 来回切换于不同服务器并使用tail来实时监控日志输出信息; - 解决在各个服务器上各个应用日积月累生成的大量日志文件造成的磁盘空间不足的问题: 如果在你的系统中存在着很多个不同的进程并且运行在多个服务器上,上面的问题将会显得尤为突出.很不幸是,笔者所在的公司的系统中,有数十个windows服务,控制台程序,计划