गो में, ट्रेस लॉगिंग एक अनूठी चुनौती पेश करती है: महत्वपूर्ण पथों में अक्षम लॉग स्टेटमेंट की लागत को कम करना। सी/सी के विपरीत, गो में प्रीप्रोसेसर मैक्रोज़ नहीं है, जिससे वैकल्पिक समाधान तलाशना आवश्यक हो जाता है।
एक दृष्टिकोण में fmt.Stringer और fmt.GoStringer इंटरफेस का उपयोग करना शामिल है। लॉग निष्पादन तक फ़ॉर्मेटिंग में देरी करके, लॉगिंग तर्कों में महंगी फ़ंक्शन कॉल से बचा जा सकता है:
type LogFormatter interface { LogFormat() string } // Inside the logger if i, ok := i.(LogFormatter); ok { fmt.Println(i.LogFormat()) }
एक अन्य रणनीति लॉगर इंटरफ़ेस का उपयोग करके रनटाइम पर या बिल्ड बाधाओं का उपयोग करके बिल्ड समय पर लॉगर को स्वैप करना है। हालाँकि, इसके लिए यह सुनिश्चित करना आवश्यक है कि लॉगिंग तर्कों में कोई महंगी कॉल न डाली जाए।
एक तीसरा विकल्प लॉगर को एक बूल के रूप में परिभाषित करना है, जो लॉगिंग को नियंत्रित करने का एक संक्षिप्त तरीका प्रदान करते हुए वर्बोसिटी को कम करता है:
type Log bool func (l Log) Println(args ...interface{}) { fmt.Println(args...) } var debug Log = false if debug { debug.Println("DEBUGGING") }
आखिरकार, कोड जनरेशन का पता लगाया जा सकता है, हालांकि यह रनटाइम कॉन्फ़िगरेशन के लिए उपयुक्त नहीं है। gofmt -r को नियोजित करके या टेक्स्ट/टेम्पलेट का उपयोग करके फ़ाइलें बनाकर, विशिष्ट डिबगिंग परिदृश्यों के लिए अलग डिबग बिल्ड बनाना संभव है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3