您可以指點我一些教程或示例,瞭解如何使用log4net記錄我的mvc web應用程序中發生的所有未處理的異常。謝謝log4net記錄所有未處理的應用程序錯誤
回答
我貼我在我的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();
}
}
你也可以使用HttpModule來註冊錯誤事件處理程序:http://codebetter.com/blogs/karlseguin/archive/2006/06/12/146356.aspx – dahlbyk
您需要添加 'routes.IgnoreRoute(「{* favicon}」,new {favicon = @「(。* /)?favicon.ico(/.*)?」});'如果您的站點中沒有圖標,則返回RegisterRoutes方法 – Tr1stan
關於HttpModule:註冊模塊的方法詳細在鏈接的文章中適用於舊的經典IIS管道模式,而不是(現在推薦的)集成模式。有關如何使用集成模式註冊的詳細信息,請參閱https://msdn.microsoft.com/library/ms227673(v=vs.100).aspx。 – personne3000
沒有face 。
try
{
NotImplementedException nie = new NotImplementedException();
throw nie;
}
catch (Exception e)
{
Log.Fatal(e);
}
假設你使用的是.NET 3.5,你可以使用擴展方法,延長的System.Exception並添加日誌(log4net.ILog日誌)方法,那麼無論你捕捉異常在你的應用程序,假設你已經正確設置了Log實例,那麼你很容易就做到了。您的擴展類可能會增長很多,並且會出現調試,信息,警告,錯誤和致命等各種過載。
對不起,我的問題並不清楚 - 我需要記錄所有未處理的異常 – kaivalya
您可能有興趣查看Aspect Oriented Programming(AOP)是什麼。
我們用Post sharp(僅限 - 我們沒有使用log4net,而是使用自定義示蹤劑)完成了這項工作。
如果log4net沒有這個「開箱即用」功能,請先檢查一下。對此我不確定。
在log4net中沒有對此的內置支持。您應該在Global.asax中執行the Application_Error event並在那裏調用您的log4net記錄器。該事件將觸發您的應用中所有未處理的事件。
對於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);
}
- 1. 使用log4net記錄.NET應用程序中的所有異常
- 2. 應用程序崩潰沒有錯誤 - 未處理處理
- 3. 在應用程序基礎上記錄/處理錯誤?
- 4. 快遞未知錯誤處理程序記錄的自定義錯誤
- 5. Azure網站中的錯誤處理程序不會記錄所有異常
- 6. 使用log4net在Windows服務中記錄未處理的異常
- 7. 在應用程序級別捕獲所有錯誤處理?
- 8. Log4Net不記錄或錯誤
- 9. 錯誤處理程序函數停止錯誤日誌記錄
- 10. ColdFusion的標記處理程序錯誤
- 11. 如何配置Log4Net以記錄未處理的異常
- 12. 未處理的異常未被Global.asax錯誤處理程序或自定義IHttpModule錯誤處理程序捕獲
- 13. Silverlight 4.0:Silverlight應用程序中的未處理錯誤[Async_ExceptionOccured]
- 14. Silverlight應用程序代碼中未處理的錯誤:4004 System.ArgumentException:
- 15. Silverlight應用程序代碼中的未處理錯誤:4004 System.Collections.Generic.KeyNotFoundException
- 16. 幫助處理JavaScript應用程序錯誤日誌記錄的策略
- 17. 如何處理/記錄Java MVC Web應用程序中的錯誤?
- 18. 處理應用程序級錯誤
- 19. WPF應用程序錯誤處理
- 20. 事件處理程序的全局錯誤日誌記錄javascript
- 21. 處理程序尚未確定錯誤
- 22. ASP.NET WEB API 2:異常處理程序和記錄器不處理所有錯誤
- 23. 處理錯誤/異常並將它們記錄在iPhone應用程序中
- 24. 使用log4net記錄多個程序集
- 25. Log4net - 記錄到錯誤的appender
- 26. 記錄在log4net中的EF錯誤
- 27. 錯誤:未處理的錯誤在Silverlight應用程序代碼:2103
- 28. 驗證Silverlight應用程序的加載沒有未處理的錯誤?
- 29. ELMAH:錯誤記錄模塊和處理程序
- 30. WCF錯誤處理程序異常記錄
您可能會或可能不會發現這個有趣的(我不知道這是否會與log4net的工作):ELMAH - http://code.google.com/p/elmah/ –
謝謝!在處理這個問題時,我實際上也將我的應用程序吸引到了Elmah,並且我非常喜歡它的便捷接口。我看到我的自己使用它比現在更多的log4網,但我會看到如何與更多的經驗.. – kaivalya