का उपयोग कर स्टैक ट्रेस लॉग कैसे करें लॉग 4नेट के साथ स्टैक ट्रेस लॉग कैसे करें? मैं .NET संस्करण का उपयोग कर रहा हूँ।log4net (सी #)
मेरे पास लॉग इन है। त्रुटि (उदा)।
धन्यवाद
का उपयोग कर स्टैक ट्रेस लॉग कैसे करें लॉग 4नेट के साथ स्टैक ट्रेस लॉग कैसे करें? मैं .NET संस्करण का उपयोग कर रहा हूँ।log4net (सी #)
मेरे पास लॉग इन है। त्रुटि (उदा)।
धन्यवाद
बस try ... catch
exception
और प्रवेश विधि में है कि अपवाद दे:
try
{
// ... code that throws exception
}
catch (Exeption ex)
{
myLogger.Error(ex);
}
यह अधिभार परोक्ष अपवाद है कि अपनी लॉग में कॉल स्टैक प्रिंट की विधि toString() कहते हैं।
वहाँ दो बुनियादी प्रकार, एक है कि एक वस्तु लेता है और एक अपवाद स्पष्ट रूप से कर रहे हैं:
catch(Exception ex)
{
// the form that takes two args has an exception as second, prints trace...
_log.Error("My custom message", ex);
}
और एक है कि किसी भी वस्तु लेता है और उस पर एक ToString()
करता है:
catch(Exception ex)
{
// the form that takes one arg uses ToString()
_log.Error(ex);
}
पूर्व अनुमति देता है आप लॉग एंट्री पर पहले कोई अतिरिक्त विवरण देने के लिए पहले एक अधिक सार्थक संदेश संलग्न करना चाहते हैं। बाद के काम करेगा लेकिन केवल ToString()
का उपयोग कर अपवाद विवरण प्रिंट है, जो आपको देता है:
ToString के डिफ़ॉल्ट कार्यान्वयन प्राप्त वर्ग कि मौजूदा अपवाद, संदेश, फोन करने का परिणाम फेंक दिया के नाम आंतरिक अपवाद पर ToString, और पर्यावरण कॉल करने का परिणाम। StackTrace। यदि इनमें से कोई भी सदस्य कुछ भी नहीं है, तो इसके मूल्य लौटाई गई स्ट्रिंग में शामिल नहीं है।
आपको यह सुनिश्चित करने की आवश्यकता है कि लेआउट पैटर्न की परिभाषा को आपके इच्छित प्रारूप और डेटा को आउटपुट करने के लिए संरचित किया गया है।
उत्पादन करने के लिए लॉगिंग घटना स्टैक ट्रेस स्तर विनिर्देशक ब्रेसिज़ के बीच संलग्न किया जा सकता की स्टैक ट्रेस किया जाता है। उदाहरण के लिए, % स्टैकट्रैक {स्तर}। type3.MethodCall3> type2.MethodCall2> type1.MethodCall1
यह पैटर्न कम्पैक्ट फ्रेमवर्क विधानसभाओं के लिए उपलब्ध नहीं है: कोई स्टैक ट्रेस स्तर विनिर्देशक दिया जाता है तो 1 माना जाता है
आउटपुट स्वरूप का उपयोग करता। void Error(object message)
के लिए log4net दस्तावेज में
void Error(object message,Exception t)
कारण है:
इस का प्रयोग करें
चेतावनी ध्यान दें कि इस विधि के लिए एक अपवाद गुजर अपवाद के नाम है, लेकिन कोई स्टैक ट्रेस प्रिंट होगा। स्टैक ट्रेस प्रिंट करने के लिए
void Error(object,Exception)
फॉर्म का उपयोग करें।
Error(object message, Exception t)
अपवाद डेटा प्रवेश करने के लिए सबसे आसान तरीका है, क्योंकि यह नहीं बल्कि वस्तु से एक अपवाद के रूप में चला जाता है और है कि एक विशेष अपवाद वर्ग के लिए लॉग संकीर्ण करने के लिए appenders में इस्तेमाल किया जा सकता (बजाय एक स्ट्रिंग है जो की खोज करके बहुत धीमी और असमान था)
सभी गैर प्रारूप प्रवेश तरीकों कि संदेश और अपवाद ले के विशेष संस्करण के होते हैं:
namespace log4net
{
public interface ILog
{
...
/* Log a message object and exception */
void Debug(object message, Exception t);
void Info(object message, Exception t);
void Warn(object message, Exception t);
void Error(object message, Exception t);
void Fatal(object message, Exception t);
...
}
}
आप Ilog विस्तार कर सकते हैं एक तरीका है कि बस के साथ एक अपवाद लॉग के लिए उसकी स्टैक ट्रेस।
public static void ErrorWithStackTrace(this ILog log, Exception exception)
{
log.Error(exception.Message,exception);
}
क्या आपको Log.Error (ex) के आउटपुट के साथ कोई विशेष समस्या है? –