मैं एल्मा को अपने आप के एक साधारण रैपर वर्ग में कॉल को लपेटने की अनुशंसा करता हूं।
using Elmah;
public static class ErrorLog
{
/// <summary>
/// Log error to Elmah
/// </summary>
public static void LogError(Exception ex, string contextualMessage=null)
{
try
{
// log error to Elmah
if (contextualMessage != null)
{
// log exception with contextual information that's visible when
// clicking on the error in the Elmah log
var annotatedException = new Exception(contextualMessage, ex);
ErrorSignal.FromCurrentContext().Raise(annotatedException, HttpContext.Current);
}
else
{
ErrorSignal.FromCurrentContext().Raise(ex, HttpContext.Current);
}
// send errors to ErrorWS (my own legacy service)
// using (ErrorWSSoapClient client = new ErrorWSSoapClient())
// {
// client.LogErrors(...);
// }
}
catch (Exception)
{
// uh oh! just keep going
}
}
}
तब जब भी आपको किसी त्रुटि को लॉग करने की आवश्यकता होती है तो उसे कॉल करें।
try {
...
}
catch (Exception ex)
{
// log this and continue
ErrorLog.LogError(ex, "Error sending email for order " + orderID);
}
यह निम्न लाभ हैं:
- आप Elmah कॉल के इस थोड़ा पुरातन वाक्य रचना को याद करने के
- आप कई DLLs है, तो आप संदर्भ के लिए Elmah की जरूरत नहीं है की जरूरत नहीं है प्रत्येक से कोर - और बस इसे अपने 'सिस्टम' डीएलएल में रखें।
- यदि आपको कभी भी कोई विशेष हैंडलिंग करने की आवश्यकता है या केवल त्रुटियों को डीबग करने के लिए ब्रेकपॉइंट डालना चाहते हैं तो आपके पास यह सब एक ही स्थान है।
- यदि आप कभी भी एल्मा से दूर चले जाते हैं तो आप केवल एक स्थान बदल सकते हैं।
- यदि आपके पास विरासत त्रुटि लॉगिंग है जिसे आप बनाए रखना चाहते हैं (मुझे बस एक साधारण त्रुटि लॉगिंग तंत्र होना है जो कुछ यूआई में बंधे हैं जिनके पास तुरंत निकालने का समय नहीं है)।
नोट: मैंने प्रासंगिक जानकारी के लिए 'प्रासंगिक संदेश' संपत्ति जोड़ दी है। यदि आप पसंद करते हैं तो आप इसे छोड़ सकते हैं लेकिन मुझे यह बहुत उपयोगी लगता है। एल्मा स्वचालित रूप से अपवादों को अनचाहे करता है ताकि अंतर्निहित अपवाद अभी भी लॉग में रिपोर्ट किया जा सके लेकिन प्रासंगिक मैसेज तब दिखाई देगा जब आप उस पर क्लिक करेंगे।
स्रोत
2013-02-08 10:09:23
भविष्य के संदर्भ के लिए, मैंने बिल्कुल इस बारे में एक पोस्ट लिखा था: [लॉगिंग त्रुटियां प्रोग्रामेटिक रूप से] (http://docs.elmah.io/logging-errors-programmatically/)। मेरा [ELMAH ट्यूटोरियल] (http://blog.elmah.io/elmah-tutorial/) इसके बारे में कुछ जानकारी भी है। – ThomasArdal