如果应用程序使用 NLog,为什么要使用 ELMAH

Why would one use ELMAH if the application is using NLog

我必须编写一个集中式日志记录框架。

基本要求是:

我已经阅读了一些资料,看起来 NLog 是最好的选择,因为它很简单而且我需要的功能最多。 我的计划是围绕 NLog 编写一个包装器 class 库,并在我所有的 asp.net 应用程序、web api 以及其他库项目和一些 classic asp 使用 COM+ 的站点。

但我注意到有些人提到使用 ELMAH 进行异常处理,使用 NLog 进行诊断。

我的问题(或者我应该说是困惑):如果我使用 NLog,为什么还要使用 ELMAH?

或者什么时候将 ELMAH 与 NLog 一起使用?

请注意,我不是要逐个比较功能,而是想了解:当一个人选择一个而不是另一个时会出现什么情况?除了 ELMAH 用于 Web 应用程序之外。

Elmah 用于处理未捕获的异常,通常是一个 "last line of defense" 能够识别什么时候事情完全崩溃。您可以在 github 页面上阅读它提供的内容:http://code.google.com/p/elmah/

NLog 和其他(我强烈推荐 Serilog)用于运行时诊断和跟踪...也就是说,转储您正在跟踪或记录的信息(根据定义,这不是未捕获的异常)。

NLog,就像 log4net 一样,nlog 已经很老了,虽然有一个最近的版本……上一个版本是一年前的,我觉得大多数 "old guard" 日志框架都有没有真正与时俱进。

Serilog 是一个更好的选择,因为它提供 "structured logging" 允许您搜索日志文件中的特定字段。

Erik 一语中的就是为什么有人会同时使用这两者。但是,ReflectInsight 是结构化日志记录和异常捕获的更好选择。 https://insightextensions.codeplex.com