zoukankan      html  css  js  c++  java
  • Enterprise Library Step By Step系列(七):日志和监测应用程序块——入门篇

    写在前面:最近一段时间项目周期比较紧,所以这篇随笔出来的比较晚,希望喜欢本系列随笔的朋友谅解。上篇随笔写的也比较简单,我会抽时间补上的,先向大家道个歉^_^

    一.日志和检测应用程序块概述:

    Enterprise Library Logging and Instrumentation Application Block版使开发人员可以在其应用程序中集成标准的日志和监测功能。应用程序可以使用日志和监测块在多个位置记录事件:

    1.事件日志(Event Log

    2.电子邮件(Email

    3.数据库(DataBase

    4.文本文件(TextFile

    5.消息队列(MSMQ

    6WMI

    7.用户自定义

    二.日志和监测应用程序块在多个方面有助于应用程序的开发:

    1.它有助于在应用程序和整个企业中维护一致的日志和规范做法

    2.它使用一致的体系结构模型,使开发人员在学习过程中少走一些弯路。

    3.它提供了可用于解决常见的应用程序日志和规范问题的实现。

    4.它是可扩展的,并支持格式化程序和事件接收器的自定义实现。

    三.几种常见的情况:

    开发人员经常编写需要日志和监测功能的应用程序。通常,这些应用程序必须适当地格式化事件和记录事件,不论是在本地还是通过网络。在某些情况下,您可能需要对一台计算机上来自多个源的事件进行整理。

    日志和监测应用程序块通过收集应用程序需要包含的多个最常见的日志和监测任务来简化应用程序的开发。每个任务都以一致的方式处理,并从特定的日志和监测提供程序中抽象应用程序代码。体系结构模型可让您通过更改配置来更改基础事件接收器和格式化程序,而无需更改应用程序代码。

    四.日志项概述:

    在记录日志时,都是创建一个日至项来承载记录的信息。每个日志项具有以下属性:

    Message(必需项)

    Cagegory(提供缺省值)

    Priority(缺省值为-1

    EventID(缺省值为-1

    Severity(缺省值为Severity Unspecified

    Title(缺省值为“”)

    .几个重要概念:

    Sink:日志记录的位置

    Category:决定了你在程序中添加的日志写向何处,是通过配置来实现的。比如说我们有两个Category,第一个我们可以指定Sink为事件日志,第二个我们可以指定Sink为文本文件。

    Formatter:格式器决定了日志记录的格式,通过配置实现,在进阶篇中我会重点去讲。

    六.为应用程序添加日志:

    为应用程序添加日志,步骤跟其他的应用程序块差不多,也是分为三步走:首先需要创建配置文件;在创建一个日志项对象,然后把它传给Logger.Write()方法。下面我们看一下具体的操作步骤:(同样我们认为您已经有了一个创建好的项目,并已经有了配置文件App.ConfigWeb.config

    1.运行配置工具后,选择File | Open Application打开应用程序的配置文件。

    2.在Application上右击并选择New | Logging and Instrumentation Application Block

    3.日志和监测应用程序块默认的Client Settings定义了in-process distribution strategyLogginEnabledTrue


    4
    .日志和检测应用程序块默认的Distributor Settings定义了两个Category(包括GeneralTrace)。我们看到在General下的Event Log Destination里面它的SinkEvent Log Sink它的Formatter默认为Text Formatter我们可以通过右击Categorys选择New | Category来新建一个Category


    ]5
    .选择File | Save All保存全部。

    6.最后别忘了拷贝目录。

    "$(ProjectDir)\*.config" "$(TargetDir)"

    7.在项目中添加对应用程序块的引用。

    Microsoft.Practices.EnterpriseLibrary.Logging.dll

    8.在程序中引用

    1using Microsoft.Practices.EnterpriseLibrary.Logging;

    9.添加日志:

    在这之前,为程序的规范性和严谨,我们先定义两个枚举:

     1/// <summary>
     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        }

    添加日志,添加日志的工作全部都由Write方法来完成。

    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
    在进阶篇里我会讲创建包含名-值对的字典,过滤事件,定制日志消息的格式,配置同步和异步等内容。

    支持TerryLee的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    引用的难点:函数返回值是引用(引用当左值)
    引用的意义与本质
    引用做函数参数
    Uva
    Uva
    Uva
    暑假集训-8.06总结
    暑假集训-8.05总结
    CH1801( 括号画家)
    最大异或对
  • 原文地址:https://www.cnblogs.com/Terrylee/p/266999.html
Copyright © 2011-2022 走看看