如何使用Microsoft Enterprise Library里面的Log功能


以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>
Logging formatter

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();
        }
    }

}
Log Testing Code

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM