寫在前面:最近一段時間項目周期比較緊,所以這篇隨筆出來的比較晚,希望喜歡本系列隨筆的朋友諒解。上篇隨筆寫的也比較簡單,我會抽時間補上的,先向大家道個歉^_^
一.日志和檢測應用程序塊概述:
Enterprise Library Logging and Instrumentation Application Block版使開發人員可以在其應用程序中集成標准的日志和監測功能。應用程序可以使用日志和監測塊在多個位置記錄事件:
1.事件日志(Event Log)
2.電子郵件(Email)
3.數據庫(DataBase)
4.文本文件(TextFile)
5.消息隊列(MSMQ)
6.WMI
7.用戶自定義
二.日志和監測應用程序塊在多個方面有助於應用程序的開發:
1.它有助於在應用程序和整個企業中維護一致的日志和規范做法
2.它使用一致的體系結構模型,使開發人員在學習過程中少走一些彎路。
3.它提供了可用於解決常見的應用程序日志和規范問題的實現。
4.它是可擴展的,並支持格式化程序和事件接收器的自定義實現。
三.幾種常見的情況:
開發人員經常編寫需要日志和監測功能的應用程序。通常,這些應用程序必須適當地格式化事件和記錄事件,不論是在本地還是通過網絡。在某些情況下,您可能需要對一台計算機上來自多個源的事件進行整理。
日志和監測應用程序塊通過收集應用程序需要包含的多個最常見的日志和監測任務來簡化應用程序的開發。每個任務都以一致的方式處理,並從特定的日志和監測提供程序中抽象應用程序代碼。體系結構模型可讓您通過更改配置來更改基礎事件接收器和格式化程序,而無需更改應用程序代碼。
四.日志項概述:
在記錄日志時,都是創建一個日至項來承載記錄的信息。每個日志項具有以下屬性:
Message(必需項)
Cagegory(提供缺省值)
Priority(缺省值為-1)
EventID(缺省值為-1)
Severity(缺省值為Severity Unspecified)
Title(缺省值為“”)
五.幾個重要概念:
Sink:日志記錄的位置
Category:決定了你在程序中添加的日志寫向何處,是通過配置來實現的。比如說我們有兩個Category,第一個我們可以指定Sink為事件日志,第二個我們可以指定Sink為文本文件。
Formatter:格式器決定了日志記錄的格式,通過配置實現,在進階篇中我會重點去講。
六.為應用程序添加日志:
為應用程序添加日志,步驟跟其他的應用程序塊差不多,也是分為三步走:首先需要創建配置文件;在創建一個日志項對象,然後把它傳給Logger.Write()方法。下面我們看一下具體的操作步驟:(同樣我們認為您已經有了一個創建好的項目,並已經有了配置文件App.Config或Web.config)
1.運行配置工具後,選擇File | Open Application打開應用程序的配置文件。
2.在Application上右擊並選擇New | Logging and Instrumentation Application Block。
3.日志和監測應用程序塊默認的Client Settings定義了in-process distribution strategy和LogginEnabled為True。
4.日志和檢測應用程序塊默認的Distributor Settings定義了兩個Category(包括General和Trace)。我們看到在General下的Event Log Destination裡面它的Sink為Event Log Sink,它的Formatter默認為Text Formatter。我們可以通過右擊Categorys選擇New | Category來新建一個Category。
]5.選擇File | Save All保存全部。
6.最後別忘了拷貝目錄。
"$(ProjectDir)\*.config""$(TargetDir)"
7
Microsoft.Practices.EnterpriseLibrary.Logging.dll
8.在程序中引用
1usingMicrosoft.Practices.EnterpriseLibrary.Logging;
9
在這之前,為程序的規范性和嚴謹,我們先定義兩個枚舉:
1/**//// <summary>
添加日志,添加日志的工作全部都由Write方法來完成。
2 /// 定義嚴重級別的枚舉
3 /// </summary>
4 public struct Priority
5 {
6 public const int Lowest = 0;
7 public const int Low = 1;
8 public const int Normal = 2;
9 public const int High = 3;
10 public const int Highest = 4;
11 }
12
13 /**//// <summary>
14 /// 定義類別的枚舉
15 /// </summary>
16 public struct Category
17 {
18 public const string General = "General";
19 public const string Trace = "Trace";
20 }
1/**////創建一個日志項
2 LogEntry log = new LogEntry();
3
4 log.Message = this.txt_LogMessage.Text;
5 log.Category = Category.General;
6 log.Priority = Priority.Normal;
7
8 /**////寫入日志
9 Logger.Write(log);
10.打開事件查看器,我們可以看到,在裡面寫入了一條日志信息:
11.雙擊日志信息,可以查看詳細的內容:
至此,一個完整的日志記錄我們就做完了。入門篇就到這裡,另外,大家可以看一下:
http://terrylee.cnblogs.com/archive/2005/11/02/267063.html
在進階篇裡我會講創建包含名-值對的字典,過濾事件,定制日志消息的格式,配置同步和異步等內容。