2012-12-04 155 views
0

我在win-form應用程序中使用Enterprise Library 5.0。企業庫5:創建企業庫對象的實例

1.關於企業圖書館的創建實例對象

什麼是解決了記錄/異常對象引用的最佳方法?在我們的應用程序中,我們有不同的解決方案。因此,解決方案有以下項目:

CommonLib(IIb類) CustomerApp(winform應用程序) CustWinService(服務贏得PROJ) ClassLib2(IIb類)

我已經實現記錄/異常,如下面CommonLib項目。創建一個類APPLOG如下:

public class AppLog 
    { 
     public static LogWriter defaultWriter = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); 
public static ExceptionManager exManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>(); 
     public AppLog() 
     { 
     } 

    public static void WriteLog(string LogMessage, string LogCategories) 
    { 
     // Create a LogEntry and populate the individual properties. 
      if (defaultWriter.IsLoggingEnabled()) 
      { 
       string[] Logcat = LogCategories.Split(",".ToCharArray()); 
       LogEntry entry2 = new LogEntry(); 
       entry2.Categories = Logcat; 
       entry2.EventId = 9007; 
       entry2.Message = LogMessage; 
       entry2.Priority = 9; 
       entry2.Title = "Logging Block Examples"; 
       defaultWriter.Write(entry2); 
      } 
    } 
} 

然後我用APPLOG類,如下的日誌記錄和異常在不同的項目:

  try 
      { 
       AppLog.WriteLog("This is Production Log Entry.", "ExceCategory"); 
       string strtest = string.Empty; 
       strtest = strtest.Substring(1); 
      } 
      catch (Exception ex) 
      { 

       bool rethrow = AppLog.exManager.HandleException(ex, "ExcePolicy"); 

      } 

所以它的使用日誌記錄和異常的正確方法是什麼?或者我可以改進它的任何其他方式?

2.日誌文件名的動態

在日誌塊,我們有文件名這就需要在app.config文件進行設置。有沒有一種方法可以通過編碼動態分配文件名值?由於我不想在配置文件中對其進行硬編碼,並且生產和開發環境的路徑不同。

感謝 TShah

回答

0

爲了使您的應用程序鬆耦合並且更易於測試,我建議定義單獨的日誌記錄和異常處理界面,然後讓你的AppLog類實現兩者。然後您的應用程序可以通過這些接口執行日誌記錄和異常處理,AppLog提供了實現。

您可以使用配置轉換爲每個環境設置不同的文件名,我相信您可以通過使用Slow Cheetah在Winforms應用程序中使用它。