लॉगिंग सॉफ्टवेयर विकास चक्र में भविष्य के उद्देश्यों के लिए रिकॉर्ड रखने की तकनीक है। लॉगिंग महत्वपूर्ण है क्योंकि लॉग डिबगिंग, डायग्नोस्टिक्स, समस्या निवारण और प्रोजेक्ट मॉनिटरिंग में मदद करते हैं।

आप त्रुटियों, चेतावनियों, डिबगिंग आदि के लिए अपने एप्लिकेशन के विभिन्न स्तरों पर लॉगिंग का उपयोग कर सकते हैं।

Go. में लॉग इन करना

गो मानक पुस्तकालय इसमें शामिल है a लकड़ी का लट्ठा कार्यक्षमता में समृद्ध पैकेज। यह विभिन्न लॉगिंग स्तरों और बुनियादी लॉगिंग-संबंधित विधियों को संभालता है जिनकी आपको अपने आवेदन के लिए आवश्यकता होगी। हालांकि लकड़ी का लट्ठा यदि आपका ऐप जटिल है और आप उत्पादकता को प्राथमिकता देना चाहते हैं तो पैकेज सबसे अच्छा विकल्प नहीं हो सकता है।

लकड़ी का लट्ठा पैकेज संरचित लॉग के लिए कार्यक्षमता प्रदान नहीं करता है। संरचित लॉगिंग पैकेज कार्यक्षमता प्रदान करते हैं जो लॉगिंग प्रक्रिया को सरल और बेहतर बनाता है। गो इकोसिस्टम ऐसे कई पैकेजों का घर है।

1. Uber. द्वारा जैप

गाली मार देना Go में लॉग लिखने के लिए Uber की ओपन-सोर्स टीम द्वारा बनाया गया एक तेज़, संरचित, समतल लॉगिंग पैकेज है। उबेर गो इकोसिस्टम में अन्य पैकेजों की तुलना में अधिक प्रदर्शनकारी लॉगिंग प्रदान करने के लिए जैप पैकेज का निर्माण किया, जिसमें शामिल हैं

instagram viewer
लकड़ी का लट्ठा पैकेट।

जैप पैकेज में दो अलग-अलग लॉगर हैं। लकड़हारा फ़ंक्शन महत्वपूर्ण प्रदर्शन मामलों को संभालता है। सुगन्धित लकड़हारा अपने प्रिंटफ-स्टाइल एपीआई के साथ अधिक लचीलापन प्रदान करता है, लेकिन यह प्रदर्शन में एक छोटे से ट्रेडऑफ़ के साथ आता है। यहां तक ​​​​कि धीमी सुगर लॉगर पैकेज अन्य संरचित लॉगिंग पैकेजों की तुलना में 4-10 गुना तेज है।

जैप पैकेज को स्थापित करने के लिए कमांड लाइन पर निम्नलिखित चलाएँ:

जाओ समझ आया जाओ.uber.org/zap

जैप पैकेज की कार्यक्षमता को सफलतापूर्वक स्थापित करने और उसका उपयोग करने के लिए आपको गो के हाल के संस्करण की आवश्यकता होगी।

लकड़हारा, त्रुटि: = zap. न्यूप्रोडक्शन () // जैप लकड़हारा उदाहरण

यदि गलती!= शून्य {
एफएमटी प्रिंट्लन (अ. गलती())
}

आस्थगित करें लकड़हारा साथ-साथ करना() // फ्लश बफर, यदि कोई हो
चीनी: = लकड़हारा। चीनी() // शक्कर लकड़हारा यहाँ

चीनी। जानकारी ("यूआरएल लाने में विफल",
// संरचित संदर्भ ढीले टाइप किए गए कुंजी-मूल्य जोड़े के रूप में।
"यूआरएल", यूआरएल,
"कोशिश करना", 3,
"बैकऑफ़", समय। दूसरा,
)

चीनी। Infof ("यूआरएल लाने में विफल:% s", यूआरएल) // प्रिंटफ स्टाइल फॉर्मेटर का उपयोग करें

लकड़हारा चर का एक उदाहरण है गाली मार देना लकड़हारा, और चीनी विधि एक शर्करायुक्त लकड़हारा उदाहरण है।

जानकारी विधि आउटपुट को लिखती है, और जानकारी का स्वरूपण संस्करण है जानकारी तरीका।

2. लॉगरस पैकेज

लोगरस गो ऐप्स के लिए एक संरचित लॉगिंग पैकेज है। लॉगरस समान कार्यक्षमता के साथ मानक पुस्तकालय लकड़हारे के साथ संगत है। यदि आपके पास का उपयोग करने का अनुभव है लकड़ी का लट्ठा पैकेज, आपको Logrus के साथ काम करने वाला एक सूट मिलेगा।

Logrus डिफ़ॉल्ट रूप से JSON स्वरूपण का समर्थन नहीं करता है। लेकिन आप हमेशा अंतर्निहित जैसे JSON लाइब्रेरी का उपयोग कर सकते हैं जेसन लॉगरस के साथ पैकेज' सेटफॉर्मेटर तरीका।

लॉगरस विभिन्न स्तरों पर लॉगिंग का समर्थन करता है और, हालांकि यह अधिकांश लॉगिंग पैकेजों की तरह प्रदर्शनकारी नहीं है, यह सुविधा संपन्न और सुरक्षित है।

आप अपनी कार्यशील निर्देशिका में Logrus को स्थापित करने के लिए इस कमांड का उपयोग कर सकते हैं:

जाओ github.com/sirupsen/logrus प्राप्त करें

यहाँ Logrus पैकेज के साथ लॉगिंग का एक उदाहरण है।

आयात (
"ओएस"
लॉग "github.com/sirupsen/logrus" // उपनाम आयात
)

समारोहमुख्य {
लकड़ी का लट्ठा। सेटफॉर्मेटर (& log. JSONFormatter{}) // JSON पर फ़ॉर्मेटर सेट करें
लकड़ी का लट्ठा। सेटऑटपुट (os. स्टडआउट) // मानक आउटपुट के लिए आउटपुट
लकड़ी का लट्ठा। सेटलेवल (लॉग। चेतावनी स्तर) // चेतावनी स्तर सेट करें

लकड़ी का लट्ठा। फ़ील्ड के साथ (लॉग। खेत{
"नाम": "जॉन डो",
"आयु": 40,
}).जानकारी ("जॉन का बायो डेटा")
}

यह कोड Logrus लाइब्रेरी को इम्पोर्ट करता है और इसके लिए उपनाम बनाता है लकड़ी का लट्ठा। में मुख्य समारोह, यह कॉल करता है सेटफॉर्मेटर लॉग के लिए एक फॉर्मेटर सेट करने की विधि। आप का उपयोग कर सकते हैं सेटआउटपुट यह निर्दिष्ट करने की विधि कि लॉग संदेशों को कहाँ जाना चाहिए; इस मामले में, मानक आउटपुट।

सेटलेवल विधि निर्दिष्ट स्तर या उससे ऊपर की चेतावनियों को लॉग करती है।

3. ज़ीरोलॉग पैकेज

जीरोलोग लॉगिंग के लिए जैप-प्रेरित, तेज़, JSON-समर्पित लाइब्रेरी है, जिसे प्रदर्शन के लिए डिज़ाइन किया गया है। यह एक अद्वितीय चेनिंग एपीआई का उपयोग करता है जो ज़ीरोलॉग को JSON लिखने और आवंटन और प्रतिबिंब के बिना ईवेंट लॉग करने की अनुमति देता है।

ज़ीरोलॉग का उद्देश्य कोड बेस और एपीआई को सरल रखते हुए उपयोग में आसान एपीआई और उच्च प्रदर्शन प्रदान करना है। यह संरचित लॉगिंग पर केंद्रित है और आप इसका उपयोग कर सकते हैं कंसोल राइटर आपके कंसोल पर सुंदर लॉगिंग के लिए विधि।

ज़ीरोलॉग पैकेज पर वैकल्पिक स्टैक ट्रेस सुविधाओं के साथ कम आवंटन, समतल लॉगिंग, नमूनाकरण, हुक, प्रासंगिक फ़ील्ड और त्रुटि लॉगिंग है। आप ज़ीरोलॉग को के साथ भी एकीकृत कर सकते हैं संदर्भ तथा एचटीटीपी पैकेज।

इसे स्थापित करने के लिए अपने कार्यक्षेत्र के टर्मिनल में इस कमांड को चलाएँ जीरोलोग पैकेट।

जाओ get -u [github.com/rs/zerolog/log] (http://github.com/rs/zerolog/log)

एक साधारण ऑपरेशन के लिए ज़ीरोलॉग पैकेज का उपयोग करने का एक सरल उदाहरण यहां दिया गया है।

आयात (
"github.com/rs/zerolog" // कॉन्फ़िगरेशन के लिए ज़ीरोलॉग
"github.com/rs/zerolog/log" // लॉगिंग के लिए लॉग करें
)

समारोहमुख्य() {
// UNIX समय अधिकांश टाइमस्टैम्प की तुलना में तेज़ और छोटा है
ज़ीरोलॉग टाइमफिल्डफॉर्मैट = ज़ीरोलॉग। TimeFormatUnix

लकड़ी का लट्ठा। प्रिंट ("हैलो वर्ल्ड")
}

टाइमफ़ील्डफ़ॉर्मेट विकल्प यूनिक्स समय प्रारूप पर सेट है, और छाप कमांड मानक आउटपुट के लिए टेक्स्ट तर्क लिखता है।

4. लॉग15 पैकेज

लॉग15 पैकेज गो में सर्वोत्तम प्रथाओं के साथ मानव और मशीन-पठनीय लॉगिंग के लिए एक सरल राय वाला टूलकिट है। Log15 मॉडल कब तथा एचटीटीपी बिल्ट-इन के विकल्प के रूप में गो मानक पुस्तकालय से पैकेज लकड़ी का लट्ठा पैकेट।

Log15 पैकेज की विशेषताओं में शामिल हैं:

  • एक सरल, समझने में आसान एपीआई
  • कुंजी-मूल्य जोड़े के साथ संरचित लॉगिंग
  • निजी संदर्भ के साथ बाल लकड़हारा
  • एक छोटे एपीआई पर कस्टम लॉगिंग कॉन्फ़िगरेशन के निर्माण के लिए हैंडलर इंटरफ़ेस
  • रंगीन टर्मिनल समर्थन
  • फ़ाइलों, धाराओं, सिस्टम लॉग और नेटवर्क लॉग में लॉगिंग के लिए अंतर्निहित समर्थन
  • आउटपुट के लिए बफरिंग रिकॉर्ड।

आप स्थापित कर सकते हैं लॉग15 इस आदेश के साथ अपने गो पैकेज में।

जाओ github.com/inconshreveable/log15 प्राप्त करें

Log15 पैकेज के साथ शुरुआत करना आसान है। यहां एक लॉगर को इंस्टेंट करने और पैकेज के साथ जानकारी और त्रुटि स्तरों पर लॉगिंग करने का एक उदाहरण दिया गया है।

आयात (
लॉग "github.com/inconshreveable/log15" // उपनाम लॉग के रूप में आयात करें
)

समारोहमुख्य() {
सर्वर लॉग: = लॉग। नया ("भंडार", "नया भंडार") // इंस्टेंट लॉगर
सर्वर लॉग Info ("रिपॉजिटरी लेयर हेल्थ चेक सफल") // जानकारी लॉग
सर्वर लॉग त्रुटि ("रिपॉजिटरी परत स्वास्थ्य जांच विफल") // त्रुटि संग्रह
}

सर्वरलॉग चर Log15 लकड़हारा का एक उदाहरण है; नया विधि आपके द्वारा प्रदान किए गए संदर्भ तर्कों के साथ एक लॉगर देता है।

जानकारी विधि एक सूचना संदेश देता है, और गलती विधि एक त्रुटि संदेश देता है।

उपयोगी और समझने योग्य लॉग लिखें

लॉगिंग विकास प्रक्रिया के किसी अन्य भाग की तरह ही महत्वपूर्ण हो सकती है। प्रारंभिक चरणों में यह बहुत आसान लग सकता है, लेकिन आवश्यक प्रथाओं से चिपके रहना प्रक्रिया को जटिल बना सकता है। लॉगिंग के हर किनारे-मामले और पहलू को संभालने के लिए, आपको चीजों को आसान बनाने के लिए लॉगिंग पैकेज का उपयोग करना चाहिए।

अपने लॉग को समझने योग्य और उनके इच्छित उद्देश्यों के लिए उपयुक्त बनाने के लिए लॉगिंग स्तर, संरचना और संदर्भ का उपयोग करें।