जब चीजें गड़बड़ हो जाती हैं तो लॉग हमारी जीवन रेखा हो सकते हैं। किसी समस्या को हल करने के लिए, हमें समस्या को पुन: उत्पन्न करना होगा, और डिबग लॉगिंग अमूल्य हो सकती है। लेकिन एक दिक्कत है - लागत। जैसे-जैसे अनुप्रयोग बड़े होते हैं, वैसे-वैसे हमारी लॉगिंग को शामिल करने और संग्रहीत करने की लागत भी बढ़ती है, और यह हमें उपयोगी होने के लिए बहुत कम लॉगिंग या हमारे द्वारा उपयोग नहीं किए जा रहे लॉग के लिए भुगतान करने के बीच एक समझौते में मजबूर करता है।
थॉम शट ने एक बार केवल त्रुटियों को लॉग करने के लिए एक तर्क दिया था, जिसमें सुझाव दिया गया था कि चेतावनी, जानकारी और डीबग स्तरों को छोड़ दिया जाना चाहिए। उसका तर्क? उत्पादन में लॉग स्तर बदलने में कठिनाई:
स्तरों को दूर फेंकें - पिछली बार कब आपने इन्फो के अलावा किसी अन्य स्थान पर प्रोडक्शन चलाया था? क्या स्तर बदलना एक त्वरित प्रक्रिया है जिसे टीम में हर कोई जानता है कि इसे कैसे करना है?
और वास्तव में, हम में से अधिकांश लोग अक्सर लॉग स्तर नहीं बदलते हैं क्योंकि इसके लिए एक प्रतिबद्धता, एक निर्माण और एक तैनाती की आवश्यकता होती है। यदि लॉग स्तर बदलना एक कठिन प्रक्रिया है, तो ये अतिरिक्त लाइनें वास्तव में केवल शोर बन जाती हैं।
गतिशील कॉन्फ़िगरेशन दर्ज करें. हालाँकि कई लोग इससे अपरिचित हो सकते हैं, लेकिन जिन्होंने इसे अपना लिया है वे इसके बिना जीवन की कल्पना नहीं कर सकते। स्थैतिक कॉन्फ़िगरेशन के विपरीत, जहां ऐप्स एक प्रॉपर्टी फ़ाइल या एक पर्यावरण चर पढ़ते हैं, डायनामिक कॉन्फ़िगरेशन, जैसा कि नाम से पता चलता है, गतिशील है।
यह यूआई के माध्यम से नए मान सेट करने की क्षमता प्रदान करता है, यह सुनिश्चित करते हुए कि प्रत्येक मूल्यांकन नवीनतम संस्करण को पुनः प्राप्त करता है।
यह तकनीक गतिशील लॉगिंग की रीढ़ है। हमारे कॉन्फ़िगरेशन सिस्टम में लॉगर -> लॉगलेवल मैपिंग को संग्रहीत करके और परिवर्तनों पर लॉगर को अपडेट करके, हम घंटों में नहीं, बल्कि मिलीसेकंड में चेतावनी से डिबग में स्थानांतरित कर सकते हैं।
प्रीफ़ैब हमारे लॉगिंग के तरीके में क्रांतिकारी बदलाव ला रहा है। प्रीफ़ैब के साथ, आप यह कर सकते हैं:
लॉगिंग की लागत बड़े पैमाने पर गंभीर हो जाती है, और सभी मात्रा से जुड़ी होती है। एग्रीगेटर्स इस खर्च को कम करने के लिए नए तरीके पेश कर रहे हैं, जैसे डेटाडॉग का लॉग विदाउट लिमिट्स , और क्रिबल मूल रूप से इस समस्या के लिए समर्पित एक पूरी कंपनी है।
लेकिन ये सभी समाधान उपयोग के आधार पर आपसे शुल्क लेते हैं। दिन के अंत में, आप अभी भी अपने द्वारा भेजे गए लॉग के लिए भुगतान कर रहे हैं।
चूँकि आपके लॉग प्रीफ़ैब से नहीं गुजरते हैं, इसलिए यह लॉग की मात्रा के आधार पर चार्ज नहीं करता है, बल्कि केवल आपके सर्वर पर डायनामिक कॉन्फ़िगरेशन की सेवा के आधार पर चार्ज करता है। प्रीफ़ैब बस फ़िल्टर के मानों को नियंत्रित करता है, यह सुनिश्चित करते हुए कि आप केवल वही लॉग करें जो आवश्यक है। इस दृष्टिकोण से महत्वपूर्ण बचत हो सकती है, खासकर बड़े पैमाने के अनुप्रयोगों के लिए।
डायनेमिक लॉगिंग को अपनाना केवल एक नए टूल का उपयोग करने के बारे में नहीं है; यह एक सांस्कृतिक बदलाव है. प्रारंभ में, यह कठिन लग सकता है। लेकिन जैसे-जैसे टीमें लक्षित लॉगिंग की शक्ति की आदी हो जाती हैं, यह एक मजबूत परिचालन मानसिकता को बढ़ावा देती है। डेवलपर्स अब सोच सकते हैं, "अगर यह एकतरफा हो गया, तो मुझे कौन सी जानकारी चाहिए?" और उसके अनुसार तैयारी करें.
उदाहरण के लिए, इस कोड स्निपेट पर विचार करें:
def charge(user, amount) balance = get_balance(user) min_balance = get_min_balance(user) do_charge = balance > min_balance logger.debug("charge decision", charge: do_charge, amount: amount, balance: balance, user_id: user.id, min_balance: min_balance) if do_charge charge_user(user, amount) else end
पहले, कई लोगों ने logger.debug
लाइन को केवल विकास शोर के रूप में देखा होगा। लेकिन गतिशील लॉगिंग के साथ, ऐसी लाइनें अमूल्य उपकरण बन जाती हैं, जो जरूरत पड़ने पर सक्रिय होने के लिए तैयार होती हैं।
लॉगिंग का परिदृश्य एक भूकंपीय बदलाव के दौर से गुजर रहा है। प्रीफैब जैसे टूल के साथ, डेवलपर्स को अब विस्तृत लॉग और लागत दक्षता के बीच चयन नहीं करना पड़ता है। डायनामिक लॉगिंग दोनों दुनियाओं में सर्वश्रेष्ठ प्रदान करती है, और संबंधित भारी कीमत टैग के बिना जरूरत पड़ने पर अंतर्दृष्टि प्रदान करती है।
हैप्पी डिबगिंग! 🚀