[C#] 使用Enterprise Library Logging Block紀錄Log (1) - 開始使用

  • 13534
  • 0

[C#] 使用Enterprise Library Loggin Block紀錄Log (1) - 開始使用


前言


在開發各種程式的時候,Log是不可或缺的,

它可以幫助我們處理紀錄各項細節,

當程式出問題,我們就可以藉由Log來了解當時的情況,

也可以詳細的紀錄操作的流程為何,

來幫助改善我們的程式,

在Log的Library上,大家應該對log4net耳熟能詳,也廣泛的使用,

在Enterprise Library中也提供了一套Logging Application Block,

來方便Log的處理,它在使用上也是十分的簡單喔!

 

實際演練


現在開始介紹如何使用Logging Application Block,

我們只需要在所需要加入Log的地方,插入一段程式碼,

並且在app.config中設定好需要的分類以及Log所要寫入的方式,

就可以把所需要的東西Log起來囉!

程式碼範例:

 


double Devide(double a, double b)
{
    try
    {
        double c = a / b;

        //Logging Function Information
        Logger.Write(string.Format("Devide Result :{0}/{1}={2}", a, b, c), "Information", 1);

        return c;
    }
    catch (Exception e)
    {
        //Logging Exception
        Logger.Write(e, "Exception", 5);
        throw;
    }
}

Logger.Write的第一個參數為所要Log的訊息,

第二個為Log的種類,是我們自己定義的,

第三個參數則是Log的重要等級。

接下來,我們可以為這段程式碼作一些小小的改進,

來讓程式碼更為好讀,也降低錯誤的機率。

替分類和重要等級建立Struct


        struct Category
        {
            public const string Debug = "Debug";
            public const string Information = "Information";
            public const string Fatal = "Fatal";
            public const string Exception = "Exception";                                    
        }

        struct Priority
        {
            public const int Pending = 0;
            public const int Low = 1;
            public const int Medium = 2;
            public const int High = 3;
            public const int Critical = 4;            
        }

之後就可以把紀錄Log的程式碼改為


Logger.Write(string.Format("Devide Result :{0}/{1}={2}", a, b, c), Category.Information, Priority.Low);

是不是更清楚好讀了呢? 而且也降低了打錯字產生錯誤的機會。

當在程式之中,加完所需要的Log之後,

接下來需要在App.config中設定Logger,決定Log紀錄的方式,

我們用Enterprise Library Configuration來開啟設定檔,並新增Logging Application Block,

30

在Loggin Application Block中可以分成四個大區塊

Category Sources - 設定Log的種類

Special Source - 設定特殊情況的Log

Trace Listeners - 設定Log要用何種方式記錄 (ex.檔案、Email、資料庫)

Formatters - 設定Log的格式 (文字、xml)

我們可以依照需求設定Log的形式如下

31

 

在Debug和Information分類的Log,我只需要記錄到Txt檔即可,

而當有Exception發生時,除了紀錄到Txt檔,還會記錄到系統管理工具=>事件檢視器之中,

而當Fatal時,可以同步的寄送Email給維護人員,Log的結果如下

32

33

只要設定好這些,就可以輕鬆的依照各種分類或等級來處理我們系統的Log,

也可以作為一種錯誤通知的機制,是不是很方便呢?

 

結語


Logging Application Block提供了足夠的選擇和彈性來記錄我們的Log,

如果通通都不符合自己的需求時,也可以透過擴充的方式來增加,

之後的文章也會介紹,要如何擴充自己專屬的Logger,

或許除了使用log4net之外,

也可以試試看Enterprise Library提供的Logging Application Block,

當作另外一種選擇喔!