.net

2009-12-15 10 views
9

के लिए त्रुटि-रिपोर्टिंग ढांचा क्या एक त्रुटि-रिपोर्टिंग-फ्रेमवर्क है जिसे आप .NET में उपयोग के लिए सुझाव देंगे। मुझे ई-मेल पर फ़ाइल के साथ ई-मेल-रिपोर्टिंग जैसी संभावनाएं चाहिए। उपयोगकर्ता को रिपोर्ट में जानकारी जोड़ने की संभावना होनी चाहिए और रिपोर्ट-फाइलों को हटाने की संभावना भी होनी चाहिए, यानी यदि उनमें गोपनीयता-महत्वपूर्ण डेटा शामिल है। एक स्वचालित स्क्रीनशॉट लेने की भी संभावना होनी चाहिए। आवश्यक ढांचे में त्रुटि-रिपोर्टिंग guis भी शामिल होना चाहिए। यह मुझे त्रुटि रिपोर्टिंग के लिए अपने guis बनाने की संभावना देनी चाहिए।.net

मैं पहले से ही log4net का उपयोग करता हूं, लेकिन जहां तक ​​मुझे पता है, उपयोगकर्ता को त्रुटि रिपोर्टिंग के लिए एक gui दिखाने के लिए यह संभव नहीं है।

अगर कोई सलाह कर रहे हैं अच्छा नहीं होगा,

अभिवादन, मार्टिन

+1

भी देखें http://stackoverflow.com/questions/49224/good-crash-reporting-library-in-c –

+0

दृश्य स्टूडियो आवेदन इनसाइट्स तुम क्या जरूरत है! https://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-desktop/ – smedasn

उत्तर

5

आप Elmah की कोशिश की है? यह उन सभी त्रुटियों को संभालने वाले तत्वों को करता है जिनके बारे में आप बात कर रहे हैं। आप चाहें कि बग-टकिंग बिट्स के लिए Trac देखें।

दया,

दान

1

Enterprise Library की जाँच करें, आप एक प्रवेश और एक अपवाद हैंडलिंग आवेदन लॉग पूरी तरह से विन्यास और एक्स्टेंसिबल है।

4

मैं "माइक्रोसॉफ्ट उद्यम लाइब्रेरी लॉगिंग ब्लॉक" और से परिचित हूँ "log4net" और इन दोनों को अपनी आवश्यकताओं में फिट (एकाधिक लॉग श्रोताओं वाले) यहाँ एक पेज है कि इन दो तुलना: http://weblogs.asp.net/lorenh/archive/2005/02/18/376191.aspx

+0

मैं पहले से ही log4net का उपयोग करता हूं, लेकिन लॉग 4net को क्रैश-रिपोर्ट विंडो बनाने की संभावना है? गोपनीयता कारणों से लॉगफाइल के साथ स्वचालित मेल उत्पन्न करना संभव नहीं है। उपयोगकर्ता को यह तय करने की संभावना होनी चाहिए कि क्या वह एक दुर्घटना की रिपोर्ट करता है। – martin

1

वहाँ Microsoft WER है, हालांकि आपको Winqual पर पंजीकरण करने की आवश्यकता है और आपकी कंपनी को वेरिसाइन आईडी की आवश्यकता है। कई लोगों के लिए बहुत परेशानी है।

0

माइक्रोसॉफ्ट के Enterprise Library, नवीनतम संस्करण 4.1-October 2008 व्यापक रूप से अपवाद हैंडलिंग और अन्य चीजों के साथ लॉगिंग के लिए उपयोग किया जाता है। एक अच्छा जीयूआई बिल्डर भी है जो आपके app.config या web.config फ़ाइल को संशोधित करेगा। बाहर The Object Guy

3

चेक तुम भी log4net कोशिश कर सकते हैं। हालांकि, मुझे ईमेलिंग के बारे में निश्चित नहीं है। हालांकि, यह एक्स्टेंसिबल है। इसके अलावा आप स्रोत कोड प्राप्त कर सकते हैं!

+0

इसे "टर्मिटा" नाम दिया गया है और http://dotnetlog.theobjectguy.com/ – Lucas

0

द्वारा किए गए प्रवेश ढांचे

+2

पर ले जाया गया है, उन्होंने कहा कि वह पहले से ही log4net का उपयोग करता है। –

3

रेड गेट के पास SmartAssembly नामक एक उत्पाद है जो त्रुटि रिपोर्टिंग करता है। मैंने इसे स्वयं नहीं इस्तेमाल किया है, लेकिन कंपनी की अच्छी प्रतिष्ठा है।

+0

सावधान रहें कि आप विजुअल स्टूडियो ऑनलाइन बिल्ड पाइपलाइन में इसका उपयोग नहीं कर सकते क्योंकि इसे लाइसेंस कुंजी के साथ इंस्टॉलेशन की आवश्यकता है। यदि आप कर सकते हैं - मेरे लिए समाधान संदेश :) –

4

अपने स्वयं के अपवाद हैंडलर को रोल करें। अपने प्रोग्राम.cs कक्षा में नीचे कोड का प्रयोग करें। अपवाद होने पर यह स्वचालित रूप से मेल भेज देगा।

using System; 
using System.Windows.Forms; 
using System.Net; 
using System.Net.Mail; 
using System.Threading; 

namespace ExceptionHandlerTest 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() 
     { 
      Application.ThreadException += 
       new ThreadExceptionEventHandler(Application_ThreadException); 

      // Your designer generated commands. 
     } 

     static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 
     { 

      var fromAddress = new MailAddress("your Gmail address", "Your name"); 
      var toAddress = new MailAddress("email address where you want to receive reports", "Your name"); 
      const string fromPassword = "your password"; 
      const string subject = "exception report"; 
      Exception exception = e.Exception; 
      string body = exception.Message + "\n" + exception.Data + "\n" + exception.StackTrace + "\n" + exception.Source; 

      var smtp = new SmtpClient 
      { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
      }; 
      using (var message = new MailMessage(fromAddress, toAddress) 
      { 
       Subject = subject, 
       Body = body 
      }) 
      { 
       //You can also use SendAsync method instead of Send so your application begin invoking instead of waiting for send mail to complete. SendAsync(MailMessage, Object) :- Sends the specified e-mail message to an SMTP server for delivery. This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes. 
       smtp.Send(message); 
      } 
     } 
    } 
} 
+0

यह बहुत अच्छा है, धन्यवाद! काश मैं आपके जवाब को सही के रूप में स्वीकार कर सकता हूं। मैंने इसे अपने प्रोजेक्ट में इस्तेमाल किया और पूरी तरह से काम करता है। मुझे पता चला है कि क्या आप अपवाद पकड़ते हैं तो यह मेल रिपोर्ट को कॉल नहीं करता है। लेकिन मैंने इसे से एक वर्ग बनाया है और मैं इसे "कोशिश करें, पकड़ो" में बुलाता हूं, इसलिए उपयोगकर्ता को अभी भी एक त्रुटि रिपोर्ट दृश्यमान हो जाता है। – MiKE

+0

मुझे सादगी पसंद है लेकिन मुझे प्रोग्राम में हार्ड कोड किए गए पासवर्ड पसंद नहीं हैं, दुरुपयोग के लिए खुला है, इसे लपेटने का एक तरीका होना चाहिए ताकि इसे आसानी से एमएसआईएल असेंबली से देखा जा सके। – rolls

+1

@rolls मैंने इस कोड से लाइब्रेरी बनाई है जिसे अब SMTP के लिए ईमेल की आवश्यकता नहीं है। यह दुर्घटनाओं को इकट्ठा करने के लिए Drdump सेवा का उपयोग करता है। आप इसे https://crashreporterdotnet.codeplex.com/ पर पा सकते हैं –