代码改变世界

微软企业库4.1学习笔记(三十六)日志模块 简介

2010-05-06 17:34  Virus-BeautyCode  阅读(3602)  评论(8编辑  收藏  举报
   

  日志模块

 

企业库的日志模块简单的实现了日志功能的常用功能。开发者可以利用模块在下面的位置记录信息:

  •          事件日志
  •          电子邮件
  •          数据库
  •          消息队列
  •          文本文件
  •          WMI的事件查看器
  •          自定义的位置

模块为记录在任何位置的日志信息都提供了一系列接口。在你的应用中不需要指明信息的目的地。配置信息决定了是否记录日志,以及日志记录的位置。这就意味着开发者不需要修改应用代码就可以变更日志的行为。

 

         本节包含下面的内容:

  •          简介
  •          使用模块进行开发
  •          典型解决方案
  •          模块的设计目的
  •          扩展和修改模块
  •          部署和实施模块
  •          示例代码
  •  

   1、  简介

通过下面的主题,你可以发现模块是否适合于你。

 

常用方案

开发者在开发过程中经常需要日志功能。典型的,响应应用事件的格式和日志信息。例如,开发者经常会写一些代码来记录非预期的日志,例如异常、或者是连接数据库失败。也包括一些跟踪应用流程的过程,参数的传递等等。

应用需要记录本地和网络的信息。某些情况,你还需要将多个位置的信息整理到一个目的地。

         日志模块通过封装的一些列方法,简化了上面这些需求的实现。包括:

  •          用代码增加和引发事件
  •          增加带有其他环境信息的日志消息
  •          跟踪应用的行为,增加上下文信息
  •          构造日志信息之前,检查filter的状态
  •          示例代码

  

代码
  private void RecordSelectedCategories()
        {
            
                categories.Add(
"Trace");
            
            
            
        }
        
protected void Button1_Click(object sender, EventArgs e)
        {
           RecordSelectedCategories();
            LogEntry log 
= new LogEntry();
            log.EventId 
= 100;
            log.Priority 
= 3;
            log.Message 
= "information message";
            log.Categories 
= Categories;
            Logger.Write(log );
          
        }
        [NonSerialized]
        
private ICollection<string> categories = new List<string>(0);
        [IgnoreMember]
        
public ICollection<string> Categories
        {
            
get { return categories; }
            
set { this.categories = value; }
        }

 

  什么时候选用日志模块

  如果你的应用需要将日志信息记录到windows事件中,邮件中,数据库中,消息队列中,WMI中,或者是一个文件中,你可以考虑使用模块。在某些情况,日志模块非常有用,例如,你需要在优先级和目录上过滤日志,你需要格式化日志信息,你需要在不修改代码的情况下变更日志的记录位置。日志模块设计的很灵活,可以自定义格式和trace listener,满足你的特定需要。

  日志的信息默认是明文记录的,如果又需要的话,可以通过访问控制列表来控制访问日志文件的用户,也可以自定义格式实现日志信息的加密。

  2、在应用中使用日志模块

  配置日志模块,如下图所示,右键菜单中选择【Logging Application Block】.

  

 

   

 

未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。