zoukankan      html  css  js  c++  java
  • Enterprise Library: Logging and Instrumentation Application BlockEmail接收池设计向导篇

    Enterprise Library: Logging and Instrumentation Application Block-Email接收池设计向导篇

     

    Written by: Rickie Lee (rickieleemail#yahoo.com)

    My blog:http://www.cnblogs.com/rickie

    Enterprise Library Quick Start中演示了使用Logging and Instrumentation Application Block记录日志信息到Application事件日志和文本文件。《Enterprise Library: Logging and Instrumentation Application Block数据库接收池(Database Sink)设计向导篇》(作者:Rickie Lee - rickieleemail#yahoo.com)演示将日志信息写入Database。这里,演示如何将日志信息写入Email并发送。

     

    1. 设置配置文件

    使用Configuration Console配置工具,在Sinks节点下添加Email Sink,并设置相应属性的属性值,如下图所示:
    Enterprise_Logging_EmailSink.jpg


    另外,在
    Categories节点下添加新的Category并命名为EmailNotification。然后,在EmailNotification目录下添加新的Destination,并设置相应的属性。如下图所示:
    Enterprise_Logging_ConfigurateEmailSink.jpg

     

    当然你也可以直接现有的Category下添加上述Destination

     

    2. Demo代码及其界面

    1Code Snippet

    Enterprise Library: Logging and Instrumentation Application Block数据库接收池(Database Sink)设计向导篇中将日志信息写入Database基本一致,只是简单调整了LogEntry对象的Category属性值。

    private void btnEmailNotification_Click(object sender, System.EventArgs e)

    {

                try

                {

                            Cursor.Current = Cursors.WaitCursor;

                            LogEntry log = new LogEntry();

                            log.Message = "Hello, Rickie.";

                            log.Priority = 1;

                            log.EventId = 100;

                            log.Severity = Severity.Information;

                            log.Title = "Demo on Logging and Instrumentation Application Block";

                            log.Category = "EmailNotification";

                            Logger.Write(log);

     

                            txtResults.Text += log.Message + Environment.NewLine;

                }

                finally

                {

                            Cursor.Current = Cursors.Default;

              }

    }

     

    2Demo应用程序界面
    Enterprise_Logging_DemoEmailSink.jpg

    3. 应注意的问题及其改进

    EmailSink调用System.Web.Mail,该Class对调用方有诸多要求,如需要调用本地的SMTP ServiceCDO.Message对象等。

    因此,在实际的业务应用开发中,推荐编写自定义的Sink,调用Web Services或采用.Net Remoting技术调用Remote Objects

    Custom Sink如下所示:

     [C#]

    public class CustomEmailSink : LogSink, IConfigurationProvider

     

    [Visual Basic]

    Public Class CustomEmailSink

      Inherits LogSink

      Implements IConfigurationProvider

    定制的sink需要实现IConfigurationProvider接口,并继承LogSink抽象类。另外需要增加SendMessageCore方法到定制sink类中,确保实现必要的动作来记录日志信息到定制的sink

    ***

    作者:Rickie Lee (rickieleemail#yahoo.com)

    本文参考Microsoft Enterprise LibraryLogging and Instrumentation Application Block文档。

     

    References:

    1. Microsoft Enterprise Library: Logging and Instrumentation Application Block.

    2. Rickie, Microsoft patterns & practices Enterprise Library January 2005 [中文稿], http://www.cnblogs.com/rickie/archive/2005/01/30/99443.html

    3. Rickie, Enterprise Library released! http://www.cnblogs.com/rickie/archive/2005/01/29/99106.html

     

     

  • 相关阅读:
    [LeetCode] Wildcard Matching, Solution
    [LeetCode] Add Binary 解题报告
    [LeetCode] Validate Binary Search Tree 解题报告
    [LeetCode] ZigZag Conversion 解题报告
    [LeetCode] Best Time to Buy and Sell Stock II Solution
    [LeetCode] Anagrams 解题报告
    [LeetCode] Word Search 解题报告
    【转载】git/github初级运用自如
    关于实训的那点事儿
    【转载】解决git Push时请求username和password,而不是sshkey验证
  • 原文地址:https://www.cnblogs.com/rickie/p/104642.html
Copyright © 2011-2022 走看看