मैं अनुरेखण और लॉगिंग के बारे में बहुत कुछ पढ़ रहा हूं, इस मामले में सर्वोत्तम प्रथाओं के लिए कुछ सुनहरा नियम खोजने की कोशिश कर रहा हूं, लेकिन कोई भी नहीं है। लोग कहते हैं कि अच्छे प्रोग्रामर अच्छे ट्रेसिंग का निर्माण करते हैं, लेकिन इसे इस तरह से लागू करें और इसे अनुभव से आना होगा।
मैंने यहां और इंटरनेट के माध्यम से भी इसी तरह के प्रश्न पढ़े हैं और वे वास्तव में वही चीज नहीं हैं जो मैं पूछ रहा हूं या जिनके पास संतोषजनक उत्तर नहीं है, हो सकता है कि प्रश्नों में कुछ विस्तार का अभाव हो।
इसलिए, लोगों का कहना है कि अनुरेखण उन मामलों में एप्लिकेशन को डीबग करने के अनुभव को दोहराने का एक प्रकार होना चाहिए जहां आप डिबगर संलग्न नहीं कर सकते। यह पर्याप्त संदर्भ प्रदान करना चाहिए ताकि आप देख सकें कि आवेदन में प्रत्येक नियंत्रण बिंदु पर कौन सा पथ लिया गया है।
गहराई से जाने पर, आप ट्रेसिंग और ईवेंट लॉगिंग के बीच अंतर भी कर सकते हैं, "इवेंट लॉगिंग इस ट्रेसिंग से अलग है कि यह नियंत्रण के विस्तृत प्रवाह के बजाय प्रमुख राज्यों को कैप्चर करता है"।
अब, मैं कहता हूं कि मैं केवल मानक .NET क्लासेस का उपयोग करके अपनी अनुरेखण और लॉगिंग करना चाहता हूं, जो System.Diagnostics
नामस्थान में हैं। मुझे लगा कि TraceSource क्लास स्टैटिक ट्रेस क्लास की तुलना में जॉब के लिए बेहतर है, क्योंकि मैं ट्रेस लेवल के बीच अंतर करना चाहता हूं और TraceSource क्लास का उपयोग करके मैं एक पैरामीटर को इवेंट प्रकार की सूचना देते हुए पास कर सकता हूं, जबकि ट्रेस क्लास का उपयोग करना चाहिए। Trace.WriteLineIf
और उसके बाद जैसी चीजों को सत्यापित SourceSwitch.TraceInformation
और SourceSwitch.TraceErrors
है, और यह भी तरह के गुण नहीं है TraceVerbose
या TraceStart
।
उस सब को ध्यान में रखते हुए, क्या आप इस प्रकार करने के लिए एक अच्छे अभ्यास पर विचार करेंगे:
- किसी विधि को भीख माँगते समय एक "स्टार्ट" इवेंट ट्रेस करें, जिसे विधि में पारित पैरामीटर मूल्यों के एक स्ट्रिंग प्रतिनिधित्व के साथ एक एकल तार्किक ऑपरेशन या एक पाइपलाइन का प्रतिनिधित्व करना चाहिए।
- डेटाबेस में कोई आइटम सम्मिलित करते समय "सूचना" घटना ट्रेस करें।
- एक महत्वपूर्ण या अगर एक बयान में एक रास्ता या किसी अन्य को लेते समय एक "सूचना" घटना का पता लगाएं।
- कैच ब्लॉक में "क्रिटिकल" या "एरर" ट्रेस करें, यह इस बात पर निर्भर करता है कि यह रिकवर करने योग्य त्रुटि है या नहीं।
- विधि के निष्पादन को समाप्त करते समय एक "स्टॉप" घटना ट्रेस करें।
और यह भी, कृपया स्पष्ट करें कि वर्बोज़ और चेतावनी के प्रकारों का पता लगाने के लिए सबसे अच्छा है। यदि आपके पास अच्छे ट्रेस / लॉगिंग के साथ कोड के उदाहरण हैं और साझा करने के लिए तैयार हैं, तो यह बहुत अच्छा होगा।
नोट: मुझे यहाँ कुछ अच्छी जानकारी मिली है, लेकिन फिर भी मैं जो खोज रहा हूँ वह नहीं है: http://msdn.microsoft.com/en-us/magazine/ff714589.aspx