使用 Enterprise Library 5 进行数据库日志记录

Posted

技术标签:

【中文标题】使用 Enterprise Library 5 进行数据库日志记录【英文标题】:Database Logging with Enterprise Library 5 【发布时间】:2011-08-09 21:46:21 【问题描述】:

有人知道如何使用 EL 5.0 实现数据库异常日志记录吗?

谢谢!

【问题讨论】:

【参考方案1】:

您需要针对数据库运行一个脚本,以便它为您创建一个特定的表结构。此外,还将创建一个存储过程,您必须在跟踪侦听器的配置部分中引用它。您应该可以在此处找到此脚本文件:C:\EntLib41Src\Blocks\Logging\Src\DatabaseTraceListener\Scripts 文件夹。我知道这是针对第 4 版库的,但是查看第 5 版时,我意识到文件夹结构发生了变化,并且脚本文件夹不见了。不过,这个网站here 应该可以为您提供一些指导。

你也可以试试MSDN Documentation


所以我对 EntLib50Src\Blocks\Logging\Src\DatabaseTraceListener\Scripts 文件夹的神秘消失做了更多调查。结果是,如果您像我一样使用 MSI 将 Entlib5 安装到您的计算机上。如果您使用的是 64 位 pc 或 C:\Program Files\Microsoft Enterprise Library 5.0,实际上有一个可以运行的源代码 MSI,深埋在 C:\Program Files (x86)\Microsoft Enterprise Library 5.0\src 中\src 如果你不是。运行此 MSI,它将安装 Entlib5 的源代码以及缺少的 Scripts 文件夹。

【讨论】:

【参考方案2】:

您完成了动手教程吗?他们有一个专门介绍企业库的每个功能的部分,包括异常日志记录。 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6932

【讨论】:

嗨,Odnxe,我阅读了实验室的手,但在这个实验室中没有提到使用数据库进行异常处理。我尝试配置配置文件,但我不知道是否需要创建存储过程或表,或者我需要创建什么才能使其工作?【参考方案3】:

第一步:配置日志块以记录到数据库。有一个实验室。 第二步:配置异常块以记录异常。有一个实验室。 第三步:将异常块指向写入数据库的日志记录类别。

就是这样。将异常记录到数据库并没有什么特别之处。异常块将写入日志记录块。日志记录块像对待任何其他日志记录操作一样对待这些。按照说明设置数据库日志记录,您基本上就完成了。

【讨论】:

嗨克里斯,我配置了你说的所有步骤,应用程序运行没有问题,但是当我检查数据库表时,没有记录。我正在使用 Oracle 数据库,我将 sql 脚本从 sql server 更改为 oracle,我不知道这是否会影响某些事情。 Entlib 团队从未支持对除 Sql Server 之外的任何对象使用数据库跟踪侦听器。我的建议是尝试直接调用您已配置的日志记录存储过程,然后查看表中是否显示。当您在没有图片中的块的情况下使该部分工作时,一直到日志块(此时应该可以正常工作)。 克里斯,我尝试调用存储过程,它工作正常。问题是当我调用 ExceptionPolicy.HandleException(e, "UIPolicy");该应用程序没有抛出任何错误或异常,它正常执行但在数据库中没有任何保存。 您是否尝试过使用日志记录块(没有异常块)?我强烈怀疑您的问题出在日志记录设置中,而不是异常块。

以上是关于使用 Enterprise Library 5 进行数据库日志记录的主要内容,如果未能解决你的问题,请参考以下文章

Enterprise Library 5.0 学习笔记

通过fsharp 使用Enterprise Library Unity 2

Enterprise Library 4.1 例外政策

通过fsharp 使用Enterprise Library Unity 3 - 三种拦截模式的探索

Microsoft Enterprise Library 简介与请大家下载Microsoft Enterprise Li

在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持