Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net和ELMAH之间有什么区别?_C#_.net_Logging_Log4net_Elmah - Fatal编程技术网

C# log4net和ELMAH之间有什么区别?

C# log4net和ELMAH之间有什么区别?,c#,.net,logging,log4net,elmah,C#,.net,Logging,Log4net,Elmah,有些人正在使用log4net而不是log4net。是什么让它变得更好 我在中发现了ELMAH,ELMAH专门用于web应用程序,而log4net则用于web和Windows应用程序。ELMAH在web应用程序中比log4net有更多的优势。ELMAH非常强大,但在功能上也非常具体。它为您做了大量的工作,而我相信Log4Net要求您进行错误处理和日志记录。ELMAH用于跟踪web应用程序的错误和异常,并允许您通过许多不同的机制(SQL、RSS、Twitter、文件、电子邮件等)轻松记录或查看这些异

有些人正在使用log4net而不是log4net。是什么让它变得更好


我在

中发现了ELMAH,ELMAH专门用于web应用程序,而log4net则用于web和Windows应用程序。ELMAH在web应用程序中比log4net有更多的优势。

ELMAH非常强大,但在功能上也非常具体。它为您做了大量的工作,而我相信Log4Net要求您进行错误处理和日志记录。

ELMAH用于跟踪web应用程序的错误和异常,并允许您通过许多不同的机制(SQL、RSS、Twitter、文件、电子邮件等)轻松记录或查看这些异常。如果您没有内置的异常处理,ELMAH很可能会在web应用程序环境中获得您想要的异常处理


Log4net也可以用于异常日志记录,但是您可能需要使用自己的处理程序来插入web应用程序。如果您需要做其他类型的信息日志记录,Log4net将优于ELMAH,因为Log4net是一个通用日志框架。Log4net也可以用于几乎任何.NET应用程序。

ELMAH:

  • Web应用程序
Log4net:

  • Web应用程序

  • Windows应用程序


其他参考资料:

Log4Net是一个通用日志框架,其API旨在用于应用程序(web、控制台、dll等)中


ELMAH是一个不引人注目的IIS插件,专门用于记录web应用程序中的异常。您不会在应用程序中看到对ELMAH的引用,它没有与您交互的API。它使用模块和处理程序IIS扩展点插入行为。此外,它还有一个web前端,用于查看web应用程序中发生的错误。Log4Net没有前端,只有各种日志接收器(appender),可以将日志消息发送到日志文件、系统日志服务器、数据库等。关键区别在于ELMAH记录未处理的应用程序异常;log4net记录您让它记录的任何内容。您可以将log4net配置为记录未处理的异常,但ELMAH可以即时捕获大量有用的信息。

ELMAH的工作原理是创建一个HTTP模块,该模块钩住错误事件,然后进行日志记录。这很容易被糟糕的设计所阻碍和破坏。Log4Net可能需要额外的前期工作,但如果您使用AOP框架并将其应用于整个类甚至程序集,则只需很少的代码和工作,就可以实现更好的异常记录


ELMAH只有在能够访问HttpContext的情况下才能工作,这在WCF服务中很难实现。因此,无论如何,您都会在WCF中使用其他记录器。为什么不使用一种更通用的解决方案呢。

既然.net core已经出现,那么情况是否会改变?(截至2018年1月,elmah不支持.net core)。这些优势是什么?我很快就会做ASP.NET,所以我想知道你的看法。我仍然是.NET的乞丐,所以我很难理解他们在他们网站上说的话。即使不编写任何代码,你也可以查看报告。请参见此处的elmah功能elmah非常有限,唯一的“avantage”是报告,但它仅限于可以访问HttpContext的web应用程序。您可以让其他记录器将数据记录到许多其他可以报告的源。一个更正是,Elmah确实有一个开发人员可以与之交互的Api。例如,信号是通过Elmah Api实现的。另一个修正?ELMAH是一个.NET HttpModule/HttpHandler。它不是IIS插件。ARR是一个插件。不是ELMAH。你对评论的反应是什么?log4net给了你更多的控制权。你可以通过使用这个ELMAH Appender for log4net来充分利用这两个世界。只需使用log4net记录您喜欢的内容(调试、信息、警告、错误),但将其存储在ELMAH中。如果您配置正确,ELMAH会立即捕获大量有用的信息。在相同的时间内,您可以通过更多的控制对log4net执行相同的操作。DarthVader-您是否有一个示例log4net配置可以执行相同的操作?ELMAH在没有配置的情况下即时捕获大量有用的信息。通过额外的配置,它将处理未处理的异常和已处理的异常。
logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");