Enterprise Library 2.0 — Logging Application Block (上)「建议收藏」

Enterprise Library 2.0 — Logging Application Block (上)「建议收藏」Enterprise Library 2.0 — Logging Application Block (上)

大家好,又见面了,我是你们的朋友全栈君。

   Enterprise Library 2.0 中的 Logging Application Block 在1.0版本中是Logging and Instrumentation Application Block,因为把重点放在了日志记录上,所以改名为Logging Application Block。Logging Application Block提供了统一的日志记录功能,它支持将日志写入到多种目的地中,比如:1、数据库;2、文本文件;3、Email;4、消息队列;5、WMI event;6、事件日志;7、自定义区域(For Example:XML File)等等。
   Logging Application Block 提供了统一的接口用于将日志写入到任何指定的目的地,我们不需要在代码中指定日志信息该写到什么地方,而是在配置文件中设定我们什么情况

下写日志以及将日志信息写到什么地方,这也就意味着操作员可以和我们开发人员一样不通过修改代码来改变日志记录行为。它对于我们程序开发有以下几点好处:
1、可以使我们的应用程序中的日志记录方法保持一致;
2、正是因为它提供一致的结构模型,很大程度上方便了我们开发人员对其的学习;
3、很好的解决了应用程序中的日志问题;
4、可扩展,我们可以自定义日志信息的过滤程序以及格式化日志信息的程序
… …

   相对于上一个版本,Logging Application Block 2.0作出了下列改变:
1、LogEntry对象现在可以属于一个或多个类别(category);
2、2.0版本中我们可以自定义过滤器,在Logging Application Block 将日志信息发送给监听器(trace listeners)之前就将该信息过滤掉,过滤器支持我们根据事件的类别和(或)优先级来过滤事件,我们可以定制符合自己需要的标准的过滤器来过滤事件;
3、你可以在代码中通过查询过滤器来判断当前事件是否需要被记录日志,这样就大大减少了我们日志记录量,可以有效的提高应用程序的性能。

   下面我们就来说一下Logging Application Block的使用方法,首先需要添加对下面三个程序集的引用:

None.gif
using
 Microsoft.Practices.EnterpriseLibrary.Logging;
None.gif

using
 Microsoft.Practices.EnterpriseLibrary.Logging.ExtraInformation;
None.gif

using
 Microsoft.Practices.EnterpriseLibrary.Logging.Filters;
None.gif

       和前面几个Block一样,在使用之前还是先说一下配置方法,首先用配置工具代开我们程序的App.Config/Web.Config,然后选中Application右键,New–>Logging Application Block,如下图:
661.gif

这时你会发现,在新建的Logging Application Block节点下自动出现了Filters,Category Source,Special Source,Trace Listeners,Formatters这样的几个节点,如下:
662.gif

      我下面按照我配置的顺序来说一下每个节点的作用,首先是Formatters,它用于指定日志信息的格式,如下图,我们在Formatters节点下创建一个Text Formatter,如下:
663.gif

然后我们可以编辑它的模板,编辑我们要显示的信息,如下:

664.gif

我们还可以配置Binary Formatter和自定义的Formatter ,这里不在多说了。

       Formatter配置好了以后,我们就可以来配置Trace Listeners了,Enterprise Library 2.0 提供了七种Trace Listeners,分别用于将日志信息记录到特定的目的地中,下面我们就来配置一个Flat File Trace Listener ,如下:

665.gif

        使用Flat File Trace Listener后,记录的日志信息就输出到指定的文本文件中,所以我们要指定输出的文本文件的路径,默认在Bin/Debug目录下;同时我们需指定该Listener的Formatter,Name等属性。如果我们配置的是一个DataBase Listener,我们则要在数据库中建立相应的表,并创建一个用于插入日志信息的存储过程。
666.gif

Trace Listeners 配置好之后就可以开始配置Category Source,我们新建一个Category Source,命名为General,指定其SourceLevel为All,如下:

667.gif

之后,我们可以对刚添加的Category Source添加一个或多个Trace Listener,本文中,我们将上面配置的SHY52O Formatter加进来,
668.gif

         如上图,在RefrenceTraceListener中选择SHY520 Listeners就可以了。
         最后我们来看一下如何配置过滤器(Filters),Enterprise Library 2.0 中提供了三种默认的Filters,分别是:Category Filter ,Log Enable Filter和Priority Filter,我们以Category Filter为例来配置:
669.gif

然后可以修改过滤器名称和过滤规则:

6610.gif

这里面我们可以选择过滤的模式,过滤模式有两种:
1、Allow All Categories Except those explicitly denied below
2、Deny All Categories Except those explicitly allowed below

根据我们需要选择好过滤模式,然后添加需要过滤的类别,点击OK按钮即可完成Category Filter的配置。

        关于Logging Application Block 的介绍和配置部分就说到这里,下一篇我们在来介绍Logging Application Block的使用方法以及自定义Formatter和Listener的方法。

如有疏忽错误的地方,欢迎指正!希望能对初学者有所帮助,并希望能和大家一起交流!

Email:pwei013@163.com

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107070.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全国计算机考试python 培训

    全国计算机考试python 培训很多同学想考python的证书,想知道Python有哪些含金量高的证书?一、全国计算机等级考试Python程序语言设计;二、PythonInstitute资格认证初级PCEP;三、PythonInstitute资格认证初级PCEP中级PCAP;四、PythonInstitute资格认证初级PCEP高级PCPP;五、工信部Python技术应用工程师专项技术证书;六、百度技术认证深度学习工程师。现在比较热门的有全国计算机等级考试Python程序语言设计、工信部Python技术应用工程师专项技术证书、百度技

    2025年9月23日
    2
  • matlab如何批量读取图片_nu(n)*nu(n)卷积

    matlab如何批量读取图片_nu(n)*nu(n)卷积有一张RGB的图像,我们要在这个图像的周围加上填充元素,使得这个图像不会再卷积操作后导致边缘信息丢失和图像尺寸的减小。为此,我们需要padding操作,numpy库中对这个进行了封装numpy.pad()函数:对一个一维数组来说:但是我们的图像至少是二维的(灰度图),我们要在这样的格式下进行填充,就需要理解到图像在空间位置上的脑补图:在参数传递中,我们只需要计算…

    2022年8月13日
    5
  • springboot简易入门教程[通俗易懂]

    springboot简易入门教程[通俗易懂]一.在idea中如何使用maven创建springboot工程1.首先打开idea,点击左上方file,在new里面寻找并点击module,如下图所示2.完成上一步后点next3.命名自己的模块

    2022年7月4日
    24
  • 为什么说hashmap是线程不安全的_map线程不安全

    为什么说hashmap是线程不安全的_map线程不安全 hashMap线程不安全的原因及表现hashMap出现线程不安全的原因:HashMap的实现里没有锁的机制,因此它是线程不安全的。其实只要有锁的机制,可以通过锁实现线程安全,我们在读写HashMap对象的时候加锁,以保障这个对象的线程安全,但不代表HashMap本身是线程安全的,因为是外力(你自己加的锁)使然。为啥不在HashMap内部加锁让它变成线程安全?这…

    2022年10月9日
    2
  • 用SpringBoot手把手教你写出优雅的后端接口

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 前言 一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(reque…

    2021年6月23日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号