【问题标题】:Logging unhandled exceptions using NLog? Should ELMAH and NLog be used together?使用 NLog 记录未处理的异常? ELMAH 和 NLog 应该一起使用吗?
【发布时间】:2011-05-03 05:40:22
【问题描述】:
我在我的 ASP.NET MVC 项目中使用 ELMAH,我真的很喜欢它的简单性。但是我需要能够以 log.Info("message") 方式在我的代码中记录某些事件。由于 ELMAH 不提供该功能,因此我开始研究 NLog。
想到了几个问题:
- 同时使用 ELMAH 和 NLog 是否过大?使用 ELMAH 处理未处理的异常,使用 NLog 处理其他所有异常?
- 是否可以将 NLog 配置为在 nlog.config 中记录未处理的异常,或者是否需要自定义代码?
- 如果需要自定义代码,添加它的最佳位置是哪里? MVC框架中的OnException方法? global.asax 文件?
非常感谢您提供任何反馈。到目前为止我还没有找到任何关于这个问题的好帖子?
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-2
elmah
nlog
【解决方案1】:
实际上,您可以从 ELMAH 触发警报。像这样:
ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex));
不要忘记添加对 elmah.dll 的引用并将using Elmah; 添加到文件中。
更多示例请参见here。
【解决方案2】:
回答第 2 个问题,我刚刚阅读了 this article,其中解释了如何使用 NLog 记录未处理的异常。基本上是在 Global.asax.cs 文件中添加类似:
protected void Application_Error()
{
Exception lastException = Server.GetLastError();
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
logger.Fatal(lastException);
}