Где вы должны регулярно регистрироваться в asp.net-mvc? Если вы используете ELMAH?
Я хочу начать регистрацию, когда элементы будут удалены из кэша asp.net, и я пытаюсь выяснить, где и как это сделать.
Я вижу, что ELMAH рекомендуется для системы регистрации ошибок исключения для приложений, но может (и должен) также использоваться для регулярных инструментов каротажа, как пример выше
Ответы
Ответ 1
Я думаю, что вы используете как ELMAH, так и Log4Net (или NLog). Использование обоих даст вам максимальную гибкость. Мне жаль, что я не могу сейчас вдаваться в подробности, но я хотел хотя бы ответить вам и сообщить вам, что использование ОБА - лучшее решение из того, что я испытал, и то, что я прочитал, сделали другие. Пожалуйста, дайте мне знать, если вам нужны объяснения и т.д.
Ответ 2
Мы были магазином Log4Net, пока Log4net не прекратил вести журнал для нас в процессе производства в многочисленных случаях. Чтобы обойти это, мы решили внедрить ELMAH для всего нашего приложения (даже для базового ведения журнала). Мы не могли бы быть счастливее с результатами, так как все наши операторы журналов появляются в одном месте, и больше нет текстовых файлов для перемещения (если мы не хотим перемещать файлы XML). Мы продолжали работу Log4Net для еще одной итерации, но, наконец, обнаружили, что она малопригодна и полностью удалила ее из нашего приложения.
Я могу понять, почему у вас может быть две разные рамки ведения журнала для сайта, тем более что для ELMAH требуется HttpContext, чтобы полностью работать. Однако мы нашли способ передать исключение в ELMAH без HttpContext:
/// <summary>
/// Main logger method that will log an exception and/or a message
/// </summary>
/// <param name="exception">Exception to log</param>
/// <param name="message">Message to log</param>
private static void Log(Exception exception, string message)
{
Error elmahError = exception != null ? new Error(exception) : new Error();
if (!string.IsNullOrWhiteSpace(message))
{
elmahError.Message = message;
}
Elmah.ErrorLog.GetDefault(null).Log(elmahError);
}
Затем в вашем web.config вам просто нужно указать applicationName
:
<elmah>
<security allowRemoteAccess="1" />
<errorLog name="ELMAHLogger" applicationName="xxx" type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ELMAH_Production_Logs" />
</elmah>
Опять же, я думаю, что Log4Net - отличная система ведения журнала, и она работала для нас уже несколько лет. Я считаю ELMAH более простым в использовании при поиске исключения, и приведенный выше код позволил нам использовать его в любом месте нашего приложения, где HttpContext может быть недоступен.