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
上述SQL语句创建如下对象:
Logging数据库、Log表、WriteLog存储过程。
在实际的应用开发过程中,你可以定制上述环境。
2. 创建配置信息
使用Configuration Console配置工具编辑App.config配置文件。完整的配置界面如下所示:
(1)首先打开App.config文件,添加Logging and Instrumentation Application Block。缺省情况下,Catagories节点下自动添加General和Trace目录,Sinks节点下包含Event Log Sink和Flat File Sink。
(2)在Sinks结点下添加Database Sink,Configuration Console工具自动添加Data Access Application Block,然后根据上述创建的Logging数据库环境,配置Data Access Application Block下的Connection strings、Database Instances等等属性,具体操作可以参考《Enterprise Library: Data Access Application Block使用向导,Part 1》和《Enterprise Library: Data Access Application Block使用向导,Part 2》。
(3)配置Database Sink节点属性信息,如DatabaseInstance, Name和StoredProcName等等,其中StoredProcName采用默认的WriteLog名称。上面在创建Logging数据库环境时,已经创建了该存储过程。
(4)在Categories节点下添加新的目录,并命名为Transaction。在Transaction目录节点下添加新的Destination,并命名为Database Destination,同时设置Formmater、Name和Sink属性。这里Sink属性值设置为上面创建的Database Sink。
本Demo项目中一共有4个配置文件:
App.config配置文件,包含配置元数据信息。
dataConfiguration.config配置文件,包含数据库配置信息。
loggingconfiguration.config配置文件,包含Logging Application Block中Client Settings的配置信息。
loggingDistributorConfiguration.config配置文件,包含Logging Application Block中Distributor Settings的配置信息。
3. Code Snippet及Demo界面
(1)首先引用相关Assembly文件
在项目中分别引用Microsoft.Practices.EnterpriseLibrary.Logging.dll和Microsoft.Practices.EnterpriseLibrary.Logging.Sinks.Database.dll。
代码中添加如下using语句:
using Microsoft.Practices.EnterpriseLibrary.Logging;
(2)Demo代码
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应用程序界面:
***
作者:Rickie Lee (rickieleemail#yahoo.com)
本文参考Microsoft Enterprise Library中Logging 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