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

Вы могли бы также хотеть изучить вероятностное соответствие.

29
задан kaivalya 2 September 2009 в 14:58
поделиться

4 ответа

Я вставляю ниже код, который использую в моем 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();

        }

    }
52
ответ дан 28 November 2019 в 01:17
поделиться

Возможно, вам будет интересно узнать, что Аспектно-ориентированное программирование (АОП) есть.

Мы достигли этого с помощью Post sharp (только - мы не использовали log4net, а настраиваемый трассировщик).

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

2
ответ дан 28 November 2019 в 01:17
поделиться

Без шуток вот и .

        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 и т. Д.

1
ответ дан 28 November 2019 в 01:17
поделиться

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

2
ответ дан 28 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: