我想知道它是否可能; b)良好实践 - 将多个应用程序记录到单个日志实例?
我有几个ASP.NET应用程序,我想将所有例外聚合到一个集中位置,可以作为Enterprise Dashboard应用程序的一部分进行查询。我正在使用EL日志记录块和EL异常博客以及数据库跟踪侦听器。我希望在所有记录到单个数据库的应用程序中看到异常。
非常欢迎任何评论,最佳做法指南或答案。
答案 0 :(得分:4)
是的,绝对可以使用EL在中央位置存储多个应用程序日志。
Enterprise Dashboard应用程序,允许您跨应用程序和层查看异常,并提供报告是集中日志记录的重要原因。所以我也会对问题b说“是”。
我假设您正在使用数据库跟踪侦听器,因为您在问题中提到了这一点。如果有大量应用程序记录大量日志条目以及查询(可能很大)日志数据库的用户,则可能会降低性能(因为日志记录同步完成),这可能会影响应用程序性能。
为了减少这种可能性,我会调查using the Distributor Service以异步方式记录。在该模型中,所有应用程序都将记录到消息队列(使用MSMQ跟踪侦听器)。然后,单独的服务轮询队列并将日志条目转发到跟踪侦听器(在您的情况下为数据库跟踪侦听器),该侦听器会将消息保留在仪表板数据库中。此设置 更复杂。但它似乎与您要实现的目标保持一致,并具有一些其他好处,例如异步处理和即使仪表板数据库关闭(例如维护)也能记录。
您可能还想考虑跨应用程序标准化一些LogEntry属性。例如,LogEntry实际上没有“application”属性,因此您可以添加ExtendedProperty来表示应用程序名称。或者,您可以对Message属性的特定格式进行标准化,以便可以从消息中提取各种信息并将其存储在单独的数据库列中,以便于搜索和分类。