记录应用程序块和语义应用程序块之间有什么区别?

时间:2016-02-12 08:35:10

标签: logging

我想知道Logging Application Block和Semantic Application块之间的区别。何时使用其他人。每个人的利弊是什么。

谢谢

2 个答案:

答案 0 :(得分:3)

语义记录应用程序块是一个框架,用于捕获和操作应用程序引发的事件,并将它们包含的类型和结构化信息存储在日志文件或其他日志记录存储中。它利用了.NET Framework(4.5版及更高版本)和Windows事件跟踪(ETW)的功能。 ETW是一种快速,轻量级,强类型,可扩展的日志记录系统,内置于Windows操作系统中。

语义记录应用程序块捕获由扩展EventSource类的自定义事件源类生成的事件。您可以创建这些类来定义应用程序可以为日志记录引发的事件。然后,您可以定义事件接收器,以指定事件的目标目标(例如数据库或文本文件),并在适当的位置将日志格式化程序附加到这些接收器。这使您可以完全控制记录信息的路由和格式。

link - https://msdn.microsoft.com/en-us/library/dn775014(v=pandp.20).aspx

日志记录应用程序块允许您将日志记录功能与应用程序代码分离。该块可以将日志条目路由到Windows事件日志,数据库或文本(或XML)文件。它还可以生成包含日志记录信息的电子邮件消息,您可以通过Windows消息队列路由的消息(使用随块提供的分发服务)。而且,如果这些内置功能都不符合您的要求,您可以创建一个提供程序,将日志条目发送到任何其他自定义位置或执行其他一些操作。

link - https://msdn.microsoft.com/en-us/library/dn440731(v=pandp.60).aspx

如果您担心登录应用程序性能的潜在开销,或者您希望使用更多结构化日志消息,或者您计划从日志条目自动化进程,则应考虑使用语义日志记录应用程序块来代替记录应用程序块。

答案 1 :(得分:1)

语义记录应用程序块提供了许多可用于消费者EventSource事件的侦听器,并将它们保存到各个位置,包括Windows Azure Tables。

日志记录应用程序块提供了一致的界面,用于将信息记录到任何目的地。您的应用程序代码未指定信息的目标。配置设置确定应用程序块是否写入日志记录信息以及该信息的位置。这意味着运营商和开发人员可以在不更改应用程序代码的情况下修改日志记录行为。

有关详细信息,我认为以下链接可能会对您有所帮助。有些东西比什么都好:)

SLAB : - https://convective.wordpress.com/2013/08/12/semantic-logging-application-block-slab/

LAB : - https://msdn.microsoft.com/en-us/library/cc309257.aspx