गो में अक्षम स्टेटमेंट के लिए कुशल लॉगिंग
महत्वपूर्ण पथों में, डिबग/ट्रेस लॉगिंग स्टेटमेंट को एम्बेड करना फायदेमंद होता है जिसे गतिशील रूप से टॉगल किया जा सकता है रनटाइम. यह अभ्यास ऑफ़लाइन ली गई उत्पादन प्रणालियों को डीबग करने या उत्पादन परिवेश को प्रतिबिंबित करने वाली परीक्षण प्रणालियों के लिए आदर्श है।
हालांकि, इस प्रकार की लॉगिंग के लिए एक महत्वपूर्ण आवश्यकता है: अक्षम कथनों का न्यूनतम प्रदर्शन प्रभाव होना चाहिए। सी/सी में, यह एक लॉग मैक्रो के माध्यम से हासिल किया गया था जो ध्वज की जांच होने तक तर्क मूल्यांकन को दबा देता था।
गो में अक्षम लॉगिंग को लागू करना
गो में इस व्यवहार का अनुकरण करना चुनौतियाँ प्रस्तुत करता है। Log.Logger के साथ io.Discard का उपयोग करना कोई विकल्प नहीं है क्योंकि यह अक्षम होने पर भी लॉग संदेशों को प्रारूपित करता है।
EnabledLogger संरचना के साथ एक प्रारंभिक प्रयास log.Logger इंटरफ़ेस को लागू करता है, सक्षम के आधार पर लॉगिंग को सक्षम/अक्षम करता है झंडा। हालाँकि, तर्क मूल्यांकन अप्रभावित रहता है, जिससे संभावित रूप से मनमाने ढंग से फ़ंक्शन कॉल के लिए प्रदर्शन संबंधी समस्याएं पैदा हो सकती हैं।
दो समाधान
इसे संबोधित करने के लिए, दो समाधान हैं:
कस्टम लॉग फ़ॉर्मेटर्स: fmt.Stringer और fmt.GoStringer का लाभ उठाना इंटरफ़ेस निष्पादन समय तक तर्क स्वरूपण में देरी कर सकता है।
रनटाइम लॉगर स्वैपिंग:अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3