程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Enterprise Library 2.0 Hands On Lab 翻譯(6):日志應用程序塊(三)

Enterprise Library 2.0 Hands On Lab 翻譯(6):日志應用程序塊(三)

編輯:關於ASP.NET

練習3:創建並使用自定義LogFormatter

在本練習中將創建一個自定義的LogFormatter,並在應用程序中使用它。

第一步

打開EnoughPI.sln項目,默認的安裝路徑應該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Logging\exercises\ex03\begin,並編譯。

第二步 創建自定義LogFormatter

1.在解決方案管理器中選擇Formatters\XmlFormatter.cs文件,選擇View | Code菜單命令,添加如下命名空間。

using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;

using Microsoft.Practices.EnterpriseLibrary.Logging.Formatters;

2.添加如下代碼到XmlFormatter類中。

[ConfigurationElementType(typeof(CustomFormatterData))]
public class XmlFormatter : LogFormatter
{
  private NameValueCollection Attributes = null;

  public XmlFormatter(NameValueCollection attributes)
  {
    this.Attributes = attributes;
  }

  public override string Format(LogEntry log)
  {
    string prefix = this.Attributes["prefix"];
    string ns = this.Attributes["namespace"];

    using (StringWriter s = new StringWriter())
    {
      XmlTextWriter w = new XmlTextWriter(s);
      w.Formatting = Formatting.Indented;
      w.Indentation = 2;

      w.WriteStartDocument(true);
      w.WriteStartElement(prefix, "logEntry", ns);
      w.WriteAttributeString("Priority", ns,
        log.Priority.ToString(CultureInfo.InvariantCulture));
      w.WriteElementString("Timestamp", ns, log.TimeStampString);
      w.WriteElementString("Message", ns, log.Message);
      w.WriteElementString("EventId", ns,
        log.EventId.ToString(CultureInfo.InvariantCulture));
      w.WriteElementString("Severity", ns, log.Severity.ToString());
      w.WriteElementString("Title", ns, log.Title);
      w.WriteElementString("Machine", ns, log.MachineName);
      w.WriteElementString("AppDomain", ns, log.AppDomainName);
      w.WriteElementString("ProcessId", ns, log.ProcessId);
      w.WriteElementString("ProcessName", ns, log.ProcessName);
      w.WriteElementString("Win32ThreadId", ns, log.Win32ThreadId);
      w.WriteElementString("ThreadName", ns, log.ManagedThreadName);
      w.WriteEndElement();
      w.WriteEndDocument();

      return s.ToString();
    }
  }
}

日志項將被格式化為XML格式,並且它期望接收兩個參數prefix和namespace。

3.選擇Build | Build Solution編譯整個解決方案。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved