Регистрация необработанных исключений с помощью 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);
}