Подтвердить что ты не робот

Где вы должны регулярно регистрироваться в asp.net-mvc? Если вы используете ELMAH?

Я хочу начать регистрацию, когда элементы будут удалены из кэша asp.net, и я пытаюсь выяснить, где и как это сделать.

Я вижу, что ELMAH рекомендуется для системы регистрации ошибок исключения для приложений, но может (и должен) также использоваться для регулярных инструментов каротажа, как пример выше

4b9b3361

Ответ 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 может быть недоступен.