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

Log4net регистрирует все необработанные ошибки приложения

Можете ли вы указать мне на какой-то учебник или примеры, как я могу зарегистрировать все не обработанные исключения, которые происходят в моем веб-приложении mvc, используя log4net. Спасибо вам

4b9b3361

Ответ 1

Я вставляю ниже код, который я использую для своего global.asax, который, кажется, удовлетворяет меня на данный момент.. Я получаю все необработанные исключения в моих файлах журнала log4net.

    public class MvcApplication : System.Web.HttpApplication
    {

        private static readonly ILog log = LogManager.GetLogger(typeof(MvcApplication));

        void Application_Error(Object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError().GetBaseException();

            log.Error("App_Error", ex);
        }


        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = "" }
            );

        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
            log4net.Config.XmlConfigurator.Configure();

        }

    }

Ответ 2

Для приложений ASP.NET вам нравится использовать событие System.Web.HttpApplication.Error, которое помещается в файл Global.asax.

protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();

    // Stop error from displaying on the client browser
    Context.ClearError();

    logger.Fatal(ex.ToString);

}

watch Управление необработанными исключениями

Ответ 3

Без лишних здесь вы идете.

        try
        {
            NotImplementedException nie = new NotImplementedException();
            throw nie;
        }
        catch (Exception e)
        {
            Log.Fatal(e);
        }

Предполагая, что вы используете .net 3.5, вы можете использовать методы расширения и расширять System.Exception и добавлять метод Log (log4net.ILog log), а затем, где бы вы ни выбрали исключение в своем приложении, при условии, что вы настроили Правильно регистрируйте экземпляр, тогда вы легко это сделаете. Ваш класс расширения может вырасти совсем немного, с различными перегрузками для Debug, Info, Warn, Error и Fatal и т.д.

Ответ 4

Вам может быть интересно узнать, что Aspect Oriented Programming (AOP).

Мы выполнили это с помощью Опубликовать острый (только - мы не использовали log4net, а пользовательский трассировщик).

Просто проверьте сначала, если log4net не имеет ничего для этого "готового". Я не уверен в этом.

Ответ 5

В log4net встроенной поддержки нет. Вы должны реализовать событие Application_Error в Global.asax и вызвать там loglognet log4net. Событие будет инициировано для всех необработанных событий в вашем приложении.