में लॉगिंग त्रुटियां मैं वर्तमान में अपवाद लॉग करने के लिए अपने एएसपी.नेट एमवीसी अनुप्रयोग में log4net का उपयोग कर रहा हूं। जिस तरह से मैं यह कर रहा हूं वह है कि मेरे सभी नियंत्रक बेसकंट्रोलर कक्षा से उत्तराधिकारी हों। BaseController के OnActionExecuting घटना में, मैं किसी भी अपवाद है कि हुआ हो सकता है लॉग इन करें:एएसपी.नेट एमवीसी
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
// Log any exceptions
ILog log = LogManager.GetLogger(filterContext.Controller.GetType());
if (filterContext.Exception != null)
{
log.Error("Unhandled exception: " + filterContext.Exception.Message +
". Stack trace: " + filterContext.Exception.StackTrace,
filterContext.Exception);
}
}
यह अच्छा काम करता है अगर एक नियंत्रक कार्रवाई के दौरान एक बिना क्रिया का अपवाद हो गई।
<customErrors mode="On">
<error statusCode="404" redirect="~/page-not-found"/>
</customErrors>
और नियंत्रक कार्रवाई है कि "पेज-नहीं-नहीं मिला" यूआरएल संभालती में, मैं लॉग इन करें:
404 त्रुटियों का सवाल है, मैं एक कस्टम त्रुटि इसलिए की तरह मेरे web.config में सेट अप करना मूल यूआरएल अनुरोध किया जा रहा है:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult PageNotFound()
{
log.Warn("404 page not found - " + Utils.SafeString(Request.QueryString["aspxerrorpath"]));
return View();
}
और यह भी काम करता है।
समस्या जो मैं कर रहा हूं वह यह है कि .aspx पृष्ठों पर मौजूद त्रुटियों को कैसे लॉग करना है। मान लीजिए कि मैं पृष्ठों या कुछ इनलाइन कोड है कि एक अपवाद फेंक होगा में से एक पर एक संकलन त्रुटि करते हैं:
<% ThisIsNotAValidFunction(); %>
<% throw new Exception("help!"); %>
ऐसा लगता है कि HandleError विशेषता सही ढंग से साझा फ़ोल्डर में मेरी Error.aspx पेज को यह पुनः मार्ग निर्माण किया जाता है, लेकिन यह निश्चित रूप से मेरे बेसकंट्रोलर के ऑनएक्शन एक्स्क्टेड विधि द्वारा पकड़ा नहीं जा रहा है। मैं सोच रहा था कि मैं शायद लॉगिंग कोड को Error.aspx पेज पर ही डाल सकता हूं, लेकिन मुझे इस स्तर पर त्रुटि जानकारी को पुनर्प्राप्त करने के बारे में अनिश्चितता है।
ELMAH के लिए +1। यहां एक [ELMAH ट्यूटोरियल] है (http://blog.elmah.io/elmah-tutorial/) मैंने आपको प्रारंभ करने में मदद के लिए लिखा था। कस्टम त्रुटि पृष्ठों आदि के साथ समस्याओं से बचने के लिए ASP.NET MVC का उपयोग करते समय [Elmah.MVC] (https://www.nuget.org/packages/Elmah.MVC/) पैकेज का उपयोग करना भी याद रखें – ThomasArdal
कुछ उत्पाद हैं वहां मौजूद है जो .NET ऐप्स में होने वाली सभी त्रुटियों को लॉग करेगा। वे ELMAH या log4net के रूप में निम्न स्तर के रूप में नहीं हैं, लेकिन यदि आप केवल त्रुटियों की निगरानी और निदान करने का प्रयास कर रहे हैं तो आपको एक टन बचाएं: [Bugsnag] (https://docs.bugsnag.com/platforms/dotnet/ एएसपी-नेट /) और [एयरब्रैक] (https://airbrake.io/languages/net_bug_tracker) उनमें से दो हैं जो मुझे पता है .NET –