TOP

[C#]用txt增加Exception Log檔(FileStream,StreamReader,StreamWriter)

因為系統一直出現無法理解的Exception ,因此增加Exception 的模組來記錄。
string ExceptionFileName = "D:\\Exception.txt";
//利用File.Exists判斷是否已經存在該檔案

        if (!File.Exists(ExceptionFileName))
        {
            //利用StreamWriter就可以新增一個txt檔,並且將Exception的資料填寫至txt檔內。
            using (StreamWriter sw = File.CreateText(ExceptionFileName))
            {
                sw.WriteLine("Message={0}。", message);
                sw.Close();
            }
        }
        else
        {
            //已經有這個檔案,因此只開啟這個檔案
            using (StreamWriter sw = new StreamWriter(ExceptionFileName))
            {

                sw.WriteLine("Message={0}。", message);
                sw.Close();

            }
        }


但在這裡就會遇到一個問題了,每次log都會被覆蓋,只保留最後一次的log而已。
因此換另一個方式來處理。

先讀取檔案內的資料。

FileStream FsRead = File.Open(ExceptionFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
StreamReader Sreader = new StreamReader(FsRead);
string strSr = Sreader.ReadToEnd();
Sreader.Dispose();
FsRead.Dispose();

將讀取出來的資料加上新的錯誤訊息,再回寫至原檔案內。

FileStream FsWrite = File.Open(ExceptionFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
StreamWriter Swriter = new StreamWriter(FsWrite);
Swriter.WriteLine("{0}", strSr);
Swriter.WriteLine("Message={0}。", message);
Swriter.Dispose();
FsWrite.Dispose();

參考資料:http://dnowba.blogspot.tw/2012/07/streamwriter-io.html
http://www.dotblogs.com.tw/yc421206/archive/2009/01/18/6862.aspx

補充:
也可以利用FileMode.Append直接從檔案的最後加上要填寫的資料。

        FileStream FsWrite = File.Open(ExceptionLogFileLocation, FileMode.Append);
        StreamWriter Swriter = new StreamWriter(FsWrite);
        Swriter.WriteLine("Message={0}。", message);
        Swriter.Dispose();
        FsWrite.Dispose();

http://www.dotblogs.com.tw/yc421206/archive/2009/01/18/6862.aspx

0 意見:

張貼留言