2015-06-05 2 views
0

Обычно мы делаем это, чтобы захватить исключения в наших лог-файлов:log4net захвата ошибок без примерки уловом

try 
{ 
    Method1(); 
    Method2(); 
} 
catch (Exception ex) 
{ 
    log.Error(ex.Message); 
} 

Есть ли способ, без использования даже попытаться прилова, чтобы захватить ошибки?

+2

[ 'AppDomain.UnhandledException'] (https://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception% 28v = vs.110% 29.aspx) может вас заинтересовать. Если вы используете веб-фреймворк, вероятно, существует какой-то подобный метод ошибки catch-all; например, ASP.NET имеет ['Application_Error'] (https://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.140%29.aspx). – jpmc26

ответ

0

вы должны внести изменения в Global.asax файл

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(); 

    } 

} 
+0

Что делать, если ваше приложение не asp.net? но в командной строке или в оконных службах. – GregDM

+0

В версии 2.0 также есть событие applicaiton_error, вносите изменения в файл Global.ascx – GANI

+0

Для получения дополнительной информации обратитесь к http://ruchirac.blogspot.com/2012/10/configure-log4net-with-aspnet-logging.html – GANI

Смежные вопросы