2013年4月7日 星期日

C#程式中寫LOG


在開發程式的過程中,可能為了除錯方便,需要將執行的過程記錄到LOG檔案中,這樣的東西應該是大家所共有的方法。而且這樣的動作在每個地方都會發生,所以應該寫一個公用的物件來處理這件事情。
   1: public static class EventLog {
   2:     public static string FilePath { get; set; }
   3:  
   4:     public static void Write(string format, params object[] arg) {
   5:         Write(string.Format(format, arg));
   6:     }
   7:  
   8:     public static void Write(string message) {
   9:         if (string.IsNullOrEmpty(FilePath)) {
  10:             FilePath = Directory.GetCurrentDirectory();
  11:         }
  12:         string filename = FilePath + 
  13:             string.Format("\\{0:yyyy}\\{0:MM}\\{0:yyyy-MM-dd}.txt", DateTime.Now);
  14:         FileInfo finfo = new FileInfo(filename);
  15:         if (finfo.Directory.Exists == false) {
  16:             finfo.Directory.Create();
  17:         }
  18:         string writeString = string.Format("{0:yyyy/MM/dd HH:mm:ss} {1}", 
  19:             DateTime.Now, message) + Environment.NewLine;
  20:         File.AppendAllText(filename, writeString, Encoding.Unicode);
  21:     }
  22: }

其中第12行是將檔案依照/年/月/年-月-日.txt的方式設定檔案名稱,第15行使用這個檔案名稱的路徑部份建立資料夾。FileInfo的資料夾建立功能是可以直接建立子資料夾的,網上有些程式還很費力的一層層判斷、建立,那是錯的。
第4行是個多型,其實只是套用string.Format,我很多時候都會多寫一個這樣的多型方法,可以讓使用的程式碼再簡潔一點。

沒有留言:

張貼留言