Rickie Lee's blog

Welcome to my blog. I'm mainly involved in .Net platform and corresponding technologies. Thanks.

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  383 随笔 :: 3 文章 :: 1240 评论 :: 97 Trackbacks

Enterprise Library: Logging and Instrumentation Application Block数据库接收池(Database Sink)设计向导篇

 

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

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

Enterprise Library Quick Start中演示了使用Logging and Instrumentation Application Block记录日志信息到Application事件日志和文本文件。这里,演示如何将日志信息写入Database

 

1. 创建Logging数据库环境

你可以使用Logging and Instrumentation Application Block附带的如下SQL语句创建Logging环境:

C:\Program Files\Microsoft Enterprise Library\src\Logging\Sinks\Database\Scripts\CreateLoggingDatabase.cmd

上述SQL语句创建如下对象:

Logging数据库、Log表、WriteLog存储过程。

在实际的应用开发过程中,你可以定制上述环境。

 

2. 创建配置信息

使用Configuration Console配置工具编辑App.config配置文件。完整的配置界面如下所示:
Enterprise_LoggingDatabaseSink_Configuration.JPG

1)首先打开App.config文件,添加Logging and Instrumentation Application Block。缺省情况下,Catagories节点下自动添加GeneralTrace目录,Sinks节点下包含Event Log SinkFlat File Sink

2)在Sinks结点下添加Database SinkConfiguration Console工具自动添加Data Access Application Block,然后根据上述创建的Logging数据库环境,配置Data Access Application Block下的Connection stringsDatabase Instances等等属性,具体操作可以参考《Enterprise Library: Data Access Application Block使用向导,Part 1》和《Enterprise Library: Data Access Application Block使用向导,Part 2》。

3)配置Database Sink节点属性信息,如DatabaseInstance, NameStoredProcName等等,其中StoredProcName采用默认的WriteLog名称。上面在创建Logging数据库环境时,已经创建了该存储过程。

4)在Categories节点下添加新的目录,并命名为Transaction。在Transaction目录节点下添加新的Destination,并命名为Database Destination,同时设置FormmaterNameSink属性。这里Sink属性值设置为上面创建的Database Sink

Demo项目中一共有4个配置文件:

App.config配置文件,包含配置元数据信息。

dataConfiguration.config配置文件,包含数据库配置信息。

loggingconfiguration.config配置文件,包含Logging Application BlockClient Settings的配置信息。

loggingDistributorConfiguration.config配置文件,包含Logging Application BlockDistributor Settings的配置信息。

 

3. Code SnippetDemo界面

1)首先引用相关Assembly文件

在项目中分别引用Microsoft.Practices.EnterpriseLibrary.Logging.dllMicrosoft.Practices.EnterpriseLibrary.Logging.Sinks.Database.dll

 

代码中添加如下using语句:

using Microsoft.Practices.EnterpriseLibrary.Logging;

 

2Demo代码

private void btnLogtoDatabaseSink_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 = "Transaction";

              Logger.Write(log);

 

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

       }

       finally

       {

              Cursor.Current = Cursors.Default;

       }

}

 

当然,还需要设置VS.NET 2003项目属性中Build Events属性值:

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

该设置方便通过VS.NET 2003的代码调试。

 

Demo应用程序界面:

Enterprise_LoggingDemo.JPG

 

***

作者: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

 

posted on 2005-02-14 07:14 Rickie 阅读(3915) 评论(2)  编辑 收藏 所属分类: E.Enterprise Library

评论

#1楼  2005-05-08 00:23 Gin [未注册用户]
你好,請問一下,為什麼我按submit之後,會出現
=======================================
安全性例外狀況
描述: 應用程式嘗試執行安全原則不允許的作業。若要授與執行此應用程式所需的權限,請洽詢您的系統管理員,或在組態檔中變更此應用程式的信任層級。

例外詳細資訊: System.Security.SecurityException: 不允許要求的登錄使用
=======================================
找不太到原因,麻煩高手解答,謝謝。
  回复  引用    

#2楼  2005-08-02 09:58 吴建明      
未处理的“System.IO.FileNotFoundException”类型的异常出现在 microsoft.practices.enterpriselibrary.configuration.dll 中。

其他信息: 找不到文件或程序集名称“Microsoft.Practices.EnterpriseLibrary.Logging.Sinks.Database”,或找不到它的一个依赖项。

  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: