.Net異常釋出器的開發(2) (轉)

themoney發表於2007-10-05
.Net異常釋出器的開發(2) (轉)[@more@]
下面以一個類便是對釋出器進行操作,如獲取上述三個的位置並設定相關配置: ///   /// ExceptionSetting 的摘要說明。   ///   public class ExceptionSetting   {   ///   /// 獲取用於異常處理的資料夾   ///   public static string FilePath   {   get   {   string fullpath;   if (AppConfig.GetAppSetting("ExceptionPath") != null)   {   fullpath = AppConfig.GetAppSetting("ExceptionPath");   while (fullpath.StartsWith(""))   {   fullpath = fullpath.Remove(0,1);   }   }   else   {   fullpath = Path.GetDirectoryName(Path.GetFullPath("Temp."));   }   fullpath = Path.GetFullPath(fullpath);   fullpath = fullpath + "";   if (!Directory.Exists(Path.GetDirectoryName(fullpath)))   {   Directory.CreateDirectory(Path.GetDirectoryName(fullpath));   }   return fullpath;   }   }     ///   /// 獲取或設定用於異常處理的資料夾的字串   ///   public static string FilePathSettingString   {   get   {   return AppConfig.GetAppSetting("ExceptionPath");   }   set   {   AppConfig.SaveAppSetting("ExceptionPath",value);   }   }     ///   /// 獲取或設定異常記錄型別,預設為使用XML檔案記錄   ///   public static CanUseExceptionLogType ExceptionLogType   {   get   {   string exceptionLogType = AppConfig.GetAppSetting("ExceptionLogType");   if (exceptionLogType.ToLower().Trim() == CanUseExceptionLogType.SystemLog.ToString().ToLower())   {   return CanUseExceptionLogType.SystemLog;   }   else if (exceptionLogType.ToLower().Trim() == CanUseExceptionLogType.All.ToString().ToLower())   {   return CanUseExceptionLogType.All;   }   else   return CanUseExceptionLogType.XMLFile;   }   set   {   AppConfig.SaveAppSetting("ExceptionLogType",value.ToString());   }   }
}
 
而下面這一個類則是用於對異常釋出器用到的三個檔案進行讀寫的: ///   /// LogAccess 的摘要說明。   ///   public class LogAccess   {   ///   /// 寫入異常處理日誌   ///   ///   public static void WriteLogFile(ExceptionLogData ds)   {   ds.WriteXml(ExceptionSetting.FilePath +"ExceptionLog.XML");   }     ///   /// 讀出異常處理日誌   ///   ///   public static ExceptionLogData ReadLogFile()   {   ExceptionLogData ds = new ExceptionLogData();   if ( !File.Exists(ExceptionSetting.FilePath +"ExceptionLog.XML"))   {   ds.WriteXml(ExceptionSetting.FilePath +"ExceptionLog.XML");   }   ds.Clear();   ds.ReadXml(ExceptionSetting.FilePath +"ExceptionLog.XML");   return ds;   }     ///   /// 讀出自定義通用資訊   ///   ///   public static CustomOutMessageData GetCustomOutMessage()   {   CustomOutMessageData ds = new CustomOutMessageData();   if ( !File.Exists(ExceptionSetting.FilePath +"CustomOutMessage.XML"))   {   ds.WriteXml(ExceptionSetting.FilePath +"CustomOutMessage.XML");   }   ds.Clear();   ds.ReadXml(ExceptionSetting.FilePath +"CustomOutMessage.XML");   return ds;   }     ///   /// 寫入自定義通用資訊   ///   ///   public static void SaveCustomOutMessage(CustomOutMessageData ds)   {   ds.WriteXml(ExceptionSetting.FilePath +"CustomOutMessage.XML");   }     ///   /// 獲取異常處理定義資訊   ///   /// 讀取到的異常處理定義資訊   public static ExceptionDetailData GetExceptionDetail()   {   ExceptionDetailData exceptionDetailDS = new ExceptionDetailData();   if ( !File.Exists(ExceptionSetting.FilePath +"ExceptionList.xml"))   {   exceptionDetailDS.WriteXml(ExceptionSetting.FilePath +"ExceptionList.xml");   FileStream fs = new FileStream(ExceptionSetting.FilePath +"ExceptionList.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite);   StreamWriter w = new StreamWriter(fs);   w.BaseStream.Seek(0, SeekOrigin.End);   w.Write("nn<!--nType:異常的型別,系統依據此值和下面的InMessage一起判定異常的處理方式,此值與異常型別的完全限定名嚴格相等,不區分大小寫;nInMessage:異常資訊中的關鍵字,系統依據此關鍵字和上面的異常型別一起判定異常的處理方式,關鍵字最多可以有四個,不區分大小寫,有層次關係;nHelpLink:自定義的有關異常的幫助檔案路徑;nOutMessage:自定義的向顯示的友好資訊。n--&gt");   w.Flush();   w.Close();   }   exceptionDetailDS.Clear();   exceptionDetailDS.ReadXml(ExceptionSetting.FilePath +"ExceptionList.xml");   return exceptionDetailDS;   }     ///   /// 儲存異常處理定義資訊   ///   /// 要儲存的異常處理定義資訊   public static void SaveExceptionDetail(ExceptionDetailData exceptionDetailDS)   {   exceptionDetailDS.WriteXml(ExceptionSetting.FilePath +"ExceptionList.xml");   FileStream fs = new FileStream(ExceptionSetting.FilePath +"ExceptionList.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite);   StreamWriter w = new StreamWriter(fs);   w.BaseStream.Seek(0, SeekOrigin.End);   w.Write("nn<!--nType:異常的型別,系統依據此值和下面的InMessage一起判定異常的處理方式,此值與異常型別的完全限定名嚴格相等,不區分大小寫;nInMessage:異常資訊中的關鍵字,系統依據此關鍵字和上面的異常型別一起判定異常的處理方式,關鍵字最多可以有四個,不區分大小寫,有層次關係;nHelpLink:自定義的有關異常的幫助檔案路徑;nOutMessage:自定義的向使用者顯示的友好資訊。n--&gt");   w.Flush();   w.Close();   }
}
 
(未完待續)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974809/,如需轉載,請註明出處,否則將追究法律責任。

.Net異常釋出器的開發(2) (轉)
請登入後發表評論 登入
全部評論

相關文章