[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,
在Loggin Application Block中可以分成四個大區塊
Category Sources - 設定Log的種類
Special Source - 設定特殊情況的Log
Trace Listeners - 設定Log要用何種方式記錄 (ex.檔案、Email、資料庫)
Formatters - 設定Log的格式 (文字、xml)
我們可以依照需求設定Log的形式如下
在Debug和Information分類的Log,我只需要記錄到Txt檔即可,
而當有Exception發生時,除了紀錄到Txt檔,還會記錄到系統管理工具=>事件檢視器之中,
而當Fatal時,可以同步的寄送Email給維護人員,Log的結果如下
只要設定好這些,就可以輕鬆的依照各種分類或等級來處理我們系統的Log,
也可以作為一種錯誤通知的機制,是不是很方便呢?
結語
Logging Application Block提供了足夠的選擇和彈性來記錄我們的Log,
如果通通都不符合自己的需求時,也可以透過擴充的方式來增加,
之後的文章也會介紹,要如何擴充自己專屬的Logger,
或許除了使用log4net之外,
也可以試試看Enterprise Library提供的Logging Application Block,
當作另外一種選擇喔!