因為系統一直出現無法理解的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 意見: