Регистрация необработанных исключений с помощью NLog? Должны ли использоваться ELMAH и NLog вместе?

Я использую ELMAH в моих проектах ASP.NET MVC, и мне очень нравится его простота. Но мне нужна была возможность регистрировать определенные события в моем коде в способе log.Info( "сообщение" ). Поскольку ELMAH не обеспечивает эту способность, я начал смотреть на NLog.

На ум пришло несколько вопросов:

  • Использует как ELMAH, так и NLog overkill? Использование ELMAH для необработанных исключений и NLog для всего остального?
  • Можно ли настроить NLog для регистрации необработанных исключений в nlog.config или требуется специальный код?
  • Если пользовательский код нужен, где было бы лучшим местом для его добавления? Метод OnException в структуре MVC? Файл global.asax?

Обратная связь Anny очень ценится. До сих пор я не нашел хороших постов по этому вопросу?

Ответ 1

Фактически вы можете инициировать оповещение от ELMAH. Например:

 ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex));

Не забудьте добавить ссылку на файл elmah.dll и добавить в файл using Elmah;. Подробнее см. здесь.

Ответ 2

Отвечая на вопрос номер 2, я просто прочитал эту статью, где объясняется, как регистрировать исключения без обработки с помощью NLog. В основном добавляется в файл Global.asax.cs что-то вроде:

protected void Application_Error() 
{
    Exception lastException = Server.GetLastError();
    NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Fatal(lastException);
}