समस्या निवारण और ऐप उपयोग का विश्लेषण करने के लिए लॉगिंग एक अमूल्य उपकरण हो सकता है। ये पैकेज इसे एक सीधी प्रक्रिया बनाने में मदद करते हैं।

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

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

1. विंस्टन

विंस्टन एक Node.js लाइब्रेरी है जो कई ट्रांसपोर्ट सहित लचीली लॉगिंग कार्यक्षमता प्रदान करती है। एक "परिवहन" आपके लॉग के लिए भंडारण माध्यम है।

विंस्टन कंसोल, फ़ाइल और नेटवर्क ट्रांसपोर्ट का समर्थन करता है। इसका मतलब है कि आप अपने लॉग को कंसोल पर प्रिंट कर सकते हैं, उन्हें फ़ाइल में लिख सकते हैं, या उन्हें नेटवर्क पर भेज सकते हैं। विंस्टन के लॉगिंग स्तरों का उपयोग करके, आप गंभीरता के आधार पर कस्टम ट्रांसपोर्ट और फ़िल्टर लॉग बना सकते हैं।

आप विंस्टन को अपनी प्रोजेक्ट निर्देशिका में निर्भरता के रूप में स्थापित कर सकते हैं एनपीएम, जावास्क्रिप्ट पैकेज मैनेजर. यह आदेश चलाएँ:

एनपीएम विंस्टन स्थापित करें

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

कॉन्स्ट विंस्टन = ज़रूरत होना("विंस्टन");

// विंस्टन लकड़हारा
कॉन्स्ट लकड़हारा = विंस्टन.क्रिएटलॉगर ({
स्तर: 'जानकारी',
प्रारूप: विंस्टन.फॉर्मेट.जेसन (),
डिफ़ॉल्ट मेटा: { सेवा: 'मेरी सेवा' },
परिवहन: [
नया विंस्टन.परिवहन। सांत्वना देना(),
नया विंस्टन.परिवहन। फ़ाइल({ फ़ाइल का नाम: 'त्रुटि लॉग', स्तर: 'गलती' }),
नया विंस्टन.परिवहन। फ़ाइल({ फ़ाइल का नाम: 'संयुक्त लॉग' })
]
});

लकड़हारा.जानकारी('हैलो, विंस्टन!');
लकड़हारा.चेतावनी('चेतावनी: कुछ गलत हो सकता है।');
लकड़हारा त्रुटि ('एक त्रुटि पाई गई।');

यह कोड एक लॉगर को तीन ट्रांसपोर्ट के साथ कॉन्फ़िगर करता है। पहला एक कंसोल ट्रांसपोर्ट है, जो लॉग संदेशों को कंसोल पर आउटपुट करेगा। दूसरा एक फ़ाइल परिवहन है जो "त्रुटि" के स्तर के साथ "त्रुटि.लॉग" फ़ाइल में लॉग लिखेगा। तीसरा एक फाइल ट्रांसपोर्ट है जो सभी लॉग्स को एक "combined.log" फाइल में लिखेगा।

लकड़हारे को डिफ़ॉल्ट रूप से "जानकारी" स्तर पर लॉग करने के लिए सेट किया गया है और इसमें "my-service" पर सेट "सेवा" फ़ील्ड के साथ एक डिफ़ॉल्ट मेटाडेटा ऑब्जेक्ट शामिल है।

कोड क्रमशः "सूचना", "चेतावनी", और "त्रुटि" स्तरों पर लॉगर का उपयोग करके तीन संदेशों को लॉग करता है। ये संदेश ट्रांसपोर्ट के कॉन्फ़िगरेशन के अनुसार कंसोल और उपयुक्त लॉग फ़ाइलों के लिए आउटपुट होंगे।

2. मॉर्गन

मॉर्गन Node.js के लिए एक लॉगिंग मिडलवेयर है जो बुनियादी अनुरोध-लॉगिंग क्षमता प्रदान करता है। यह हल्का और उपयोग में आसान होने के लिए डिज़ाइन किया गया है। मॉर्गन HTTP रिक्वेस्ट को इंटरसेप्ट करके और प्रासंगिक जानकारी लॉग करके काम करता है, जैसे कि रिक्वेस्ट मेथड, URL, स्टेटस कोड आदि।

मॉर्गन के प्रमुख लाभों में से एक इसकी सरलता है। आप इसे कोड की कुछ पंक्तियों के साथ Node.js एप्लिकेशन में जोड़ सकते हैं, क्योंकि इसे सेट अप करने के लिए किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।

मॉर्गन सहित कई लॉगिंग स्वरूपों का समर्थन करता है सामान्य, संयुक्त, छोटा, छोटा, और देव प्रारूप, आपको वह चुनने की अनुमति देता है जो आपकी आवश्यकताओं के अनुरूप हो।

आप इस आदेश को चलाकर मॉर्गन को अपनी प्रोजेक्ट निर्देशिका में निर्भरता के रूप में स्थापित कर सकते हैं:

एनपीएम मॉर्गन स्थापित करें

यह कोड दिखाता है कि मॉर्गन का उपयोग कैसे करें एक एक्सप्रेस आवेदन:

कॉन्स्ट एक्सप्रेस = ज़रूरत होना("अभिव्यक्त करना");
कॉन्स्ट मॉर्गन = ज़रूरत होना("मॉर्गन");
कॉन्स्ट ऐप = एक्सप्रेस ();

app.use (मॉर्गन ("देव"));

ऐप.गेट ("/", (अनुरोध, रेस) => {
पुनः भेजें ("हैलो वर्ल्ड!");
});

ऐप.सुनो (3000, () => सांत्वना देना।लकड़ी का लट्ठा(`एप्लिकेशन प्रारंभ`));

कोड मॉर्गन का उपयोग करके प्रारंभ करता है देव प्रारूप। जब आप रूट रूट (/) के लिए GET अनुरोध करते हैं, तो मॉर्गन उस अनुरोध के विवरण को कंसोल में लॉग करता है।

इसकी सरलता के बावजूद, मॉर्गन एक शक्तिशाली लॉगिंग पैकेज है जो Node.js अनुप्रयोगों के लिए आवश्यक अनुरोध-लॉगिंग क्षमताएं प्रदान करता है।

3. पिनो

पिनो Node.js अनुप्रयोगों के लिए एक लोकप्रिय और हल्का लॉगिंग पैकेज है जो तेज प्रदर्शन और कम ओवरहेड का दावा करता है, जैसा कि में कहा गया है उनके बेंचमार्क.

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

Pino का उपयोग Node.js ढांचे के आधार पर भिन्न होता है; आप नीचे दी गई कमांड चलाकर पिनो को अपनी एक्सप्रेस प्रोजेक्ट डायरेक्टरी में एक निर्भरता के रूप में स्थापित कर सकते हैं:

npm पिनो-http स्थापित करें

विभिन्न ढांचे के लिए, जांचें पिनो दस्तावेज.

यह कोड ब्लॉक एक्सप्रेस एप्लिकेशन में पिनो के उपयोग को दर्शाता है:

कॉन्स्ट एक्सप्रेस = ज़रूरत होना("अभिव्यक्त करना");
कॉन्स्ट ऐप = एक्सप्रेस ();
कॉन्स्ट पिनो = ज़रूरत होना('पिनो-एचटीटीपी')()

app.use (पिनो)

ऐप.गेट ("/", (अनुरोध, रेस) => {
पिनो (अनुरोध, Res) // लॉग अनुरोध और प्रतिक्रिया
req.log.info ('रूट रूट') // अतिरिक्त जानकारी लॉग करता है
पुनः भेजें ("हैलो वर्ल्ड!");
});

ऐप.सुनो (3000, () => सांत्वना देना।लकड़ी का लट्ठा(`एप्लिकेशन प्रारंभ`));

यह कोड पिनो को प्रारंभ करता है और इसे मिडलवेयर के रूप में पंजीकृत करता है। जब आप रूट रूट (/) के लिए GET अनुरोध करते हैं, तो पिनो आपके अनुरोध के विवरण और कंसोल पर उसकी प्रतिक्रिया को लॉग करता है।

4. डिबग

डीबग Node.js कोर की डिबगिंग तकनीक के बाद मॉडलिंग किए गए Node.js के लिए एक लॉगिंग पैकेज है। यह एक हल्का लॉगिंग समाधान प्रदान करता है जो आपको कोड को संशोधित किए बिना चुनिंदा रूप से लॉगिंग को सक्षम या अक्षम करने की अनुमति देता है, जिससे समस्याओं को डीबग करना और समस्या निवारण करना आसान हो जाता है।

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

आप इस आदेश के साथ डीबग को अपनी प्रोजेक्ट निर्देशिका में निर्भरता के रूप में स्थापित कर सकते हैं:

एनपीएम डीबग स्थापित करें

यह कोड एक एक्सप्रेस एप्लिकेशन में डिबग का उपयोग दिखाता है:

कॉन्स्ट एक्सप्रेस = ज़रूरत होना('अभिव्यक्त करना');

// डिबग आयात करें और नाम स्थान बनाएं
कॉन्स्ट डिबग = ज़रूरत होना('डीबग')('myapp: सर्वर');

कॉन्स्ट ऐप = एक्सप्रेस ();
कॉन्स्ट बंदरगाह = प्रक्रिया.env। पोर्ट || 3000;

ऐप.गेट ('/', (अनुरोध, रेस) => {
डिबग ('/' के लिए अनुरोध प्राप्त हुआ);
पुनः भेजें ('हैलो वर्ल्ड!');
});

app.listen (बंदरगाह, () => {
डिबग (`सर्वर पोर्ट पर सुन रहा है ${पोर्ट}`);
});

कोड एक नामस्थान बनाता है, मायएप: सर्वर. यह नाम स्थान आपके “से संबंधित लॉग को अलग करेगासर्वर” मॉड्यूल आपके आवेदन में एक अलग नाम स्थान के साथ अन्य मॉड्यूल से जुड़े हैं।

डीबग प्रारंभ करने के लिए यह कमांड चलाएँ:

DEBUG=myapp:* नोड server.js

उपरोक्त यह आदेश किसी भी लॉग संदेश से शुरू होने वाले नामस्थान से मेल खाएगा myapp:. यदि आप केवल अपने से संबंधित लॉग देखना चाहते हैं सर्वर मॉड्यूल, आप सेट कर सकते हैं डीबग पर्यावरण चर के लिए मायएप: सर्वर.

डीबग का एक अन्य लाभ विंस्टन जैसे अन्य लॉगिंग पैकेजों के साथ इसकी अनुकूलता है।

लॉगिंग पैकेज चुनना

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

अंततः, लॉगिंग पैकेज का चुनाव आपकी परियोजना की विशिष्ट आवश्यकताओं और आवश्यकताओं पर निर्भर करेगा।