【问题标题】:Can MS Enterprise Library Logging be used for multiple applications?MS Enterprise Library Logging 可以用于多个应用程序吗?
【发布时间】:2009-09-09 22:04:05
【问题描述】:

我想知道它是否 - a) 可能; b) 良好做法 - 将多个应用程序记录到单个日志实例?

我有几个 ASP.NET 应用程序,我想将所有异常汇总到一个可以作为 Enterprise Dashboard 应用程序的一部分进行查询的集中位置。我同时使用 EL 日志记录块和 EL 异常博客以及数据库跟踪侦听器。我希望看到记录到单个数据库的所有应用程序的异常。

我们非常欢迎任何 cmets、最佳实践指南或答案。

【问题讨论】:

  • 您的日志条目的目的地是什么?它是平面文件、事件日志、数据库等吗?
  • 目标是一个 SQL 数据库。

标签: exception-handling enterprise-library


【解决方案1】:

是的,绝对可以使用 EL 将多个应用程序日志存储在一个中心位置。

Enterprise Dashboard 应用程序可让您跨应用程序和层查看异常并提供报告,这是集中您的日志记录的重要原因。所以我也会对问题 b 说是。

可能的问题/负面因素

我假设您正在使用数据库跟踪侦听器,因为您在问题中提到了这一点。如果有大量应用程序记录大量日志条目以及用户查询(可能很大)日志数据库,则性能可能会降低(因为日志记录是同步完成的),这可能会影响您的应用程序性能。

另一种方法

为了减少这种可能性,我会调查using the Distributor Service 以异步记录。在该模型中,所有应用程序都将记录到消息队列(使用 MSMQ 跟踪侦听器)。然后,一个单独的服务轮询队列并将日志条目转发到跟踪侦听器(在您的情况下为数据库跟踪侦听器),该侦听器会将消息保存在仪表板数据库中。此设置更复杂。但它似乎确实与您想要实现的目标一致,并且具有其他一些好处,例如异步处理和即使仪表板数据库关闭(例如用于维护)也能够记录日志的能力。

其他注意事项

您可能还想考虑跨应用程序标准化一些 LogEntry 属性。例如,LogEntry 并没有真正的“应用程序”属性,因此您可以添加一个 ExtendedProperty 来表示应用程序名称。或者,您可以对 Message 属性的特定格式进行标准化,以便可以从消息中提取各种信息并存储在单独的数据库列中,以便于搜索和分类。

【讨论】:

  • 是的,我正在使用数据库跟踪侦听器。第一个使用它的应用程序将被重构为使用 MSMQ,因此我可以将这种经验应用到我的日志记录中。感谢您也让我注意到分布式服务和 ExtendedProperty(ies)。感谢您帮助多伦多同胞:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2012-02-18
相关资源
最近更新 更多