Java中重新導向輸出資料流實現用檔案記錄程式日誌

來源:互聯網
上載者:User
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類的標準輸入資料流。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.