"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में अक्षम ट्रेस लॉगिंग स्टेटमेंट की लागत को कैसे कम करें?

गो में अक्षम ट्रेस लॉगिंग स्टेटमेंट की लागत को कैसे कम करें?

2024-11-09 को प्रकाशित
ब्राउज़ करें:537

How to Minimize the Cost of Disabled Trace Logging Statements in Go?

अक्षम स्टेटमेंट के लिए गो में कम लागत वाली ट्रेस लॉगिंग

गो में, ट्रेस लॉगिंग एक अनूठी चुनौती पेश करती है: महत्वपूर्ण पथों में अक्षम लॉग स्टेटमेंट की लागत को कम करना। सी/सी के विपरीत, गो में प्रीप्रोसेसर मैक्रोज़ नहीं है, जिससे वैकल्पिक समाधान तलाशना आवश्यक हो जाता है।

एक दृष्टिकोण में 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