以VS2012里面建立的一個控制台程序為例
1. 安裝Microsoft Enterprise Library里面的Logging Application模塊。
在需要使用Log功能的項目上面右鍵,選擇Manage NuGet Packeages...
2. 在Manage NuGet Packeages窗口里面找到Enterprise Library - Logging Application Block,然后安裝。
安裝成功以后,項目引用中會增加兩個新的引用。
3. 我們需要對App.config文件進行配置。在這里我們使用配置編輯工具:Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix。這個工具的下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=38789
4. 配置App.config文件。右鍵App.config文件選擇Edit configuration file v6,打開配置工具窗口。
5. 選擇菜單命令Block -> Add Logging Settings
6. 在Logging Target Listeners里面點加號按鈕,然后選擇Add Rolling Flat File Trace Listener(生成可以進行自動分割的文本文件)。
7. 一般需要設置的參數有:Asynchronous(選true則進行異步log), File Exist Behavior(選), File Name, Formatter Name, Max Archived Files, Roll Interval, Roll Size KB。
其中Formatter Name的值從Log Message Formatters中生成的值中選取。
8. 生成 Message Format。在Log Message Formatters中點擊加號按鈕,選擇Add Text Formatter
點擊Template右側的...按鈕,打開Template Editor對話框,對Template的內容進行編輯
編輯后在App.config中生成的xml代碼如下:

<formatters> <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp(local:MM/dd/yyyy HH:mm:ss.fffffff)}{tab}Category: {category}{tab}Severity: {severity}{tab}App Domain: {localAppDomain}{tab}Message location: {dictionary({key} - {value}{tab})}Message: {message}{tab}" name="LogFormatter" /> </formatters>
9. 在窗口左側區域中點擊Cotegories右邊的加號按鈕。生成一個新的Category
10. 在新生成的Category區域中修改Name屬性,然后點擊Listeners右邊的加號按鈕,選擇在Logging Target Listeners區域中已經生成的Listener。
11. 對已經進行的設置保存
12. 寫個簡單的測試程序看看生成的Log效果如何

using Microsoft.Practices.EnterpriseLibrary.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace LogTesting { class Program { static void Main(string[] args) { Logger.SetLogWriter(new LogWriterFactory().Create()); for (int i = 0; i < 10; i++) { Thread thread = new Thread(() => { for (int j = 0; j < 10; j++) { Logger.Write("測試", "MyLog", 0, 0, System.Diagnostics.TraceEventType.Information); Dictionary<string, object> dic = new Dictionary<string, object>() { { "Projec", "world" }, { "Method", "hello" }, }; Logger.Write("test1", "MyLog", 0, 0, System.Diagnostics.TraceEventType.Error, "", dic); } }); thread.Start(); } Console.ReadKey(); } } }