TypeScript के लिए लॉगिंग: Winston लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Winston क्या है और इसकी आवश्यकता क्यों है?

Winston TypeScript और JavaScript में एप्लिकेशन लॉगिंग के लिए एक शक्तिशाली और लचीली लाइब्रेरी है। यह आपको विभिन्न महत्व स्तरों के साथ लॉग को विभिन्न स्थानों (कंसोल, फ़ाइलें, डेटाबेस) में रिकॉर्ड करने की अनुमति देता है। सरल console.log के विपरीत, Winston लॉग के प्रारूप, उनके रोटेशन और फ़िल्टरिंग पर पूर्ण नियंत्रण देता है।

Winston का उपयोग क्यों करें? बड़े प्रोजेक्ट्स में, मानक कंसोल आउटपुट बेकार हो जाता है: लॉग मिश्रित हो जाते हैं, खो जाते हैं, और उनका विश्लेषण नहीं किया जा सकता। Winston इन समस्याओं को हल करता है: आप त्रुटियों को एक अलग फ़ाइल में, सूचनात्मक संदेशों को कंसोल में, और डिबग डेटा को डेटाबेस में रिकॉर्ड करने के लिए सेट कर सकते हैं। यह डिबगिंग, मॉनिटरिंग और ऑडिट के लिए महत्वपूर्ण है।

स्थापना (Installation)

TypeScript प्रोजेक्ट में Winston स्थापित करने के लिए, कमांड चलाएँ:

npm install winston

टाइप्स स्थापित करने की भी सिफारिश की जाती है:

npm install --save-dev @types/winston

यदि आप yarn का उपयोग कर रहे हैं:

yarn add winston

मुख्य कार्य (Main Features)

  • लॉगिंग स्तर: error, warn, info, http, verbose, debug, silly। प्रत्येक स्तर की प्राथमिकता होती है, और आप कॉन्फ़िगर कर सकते हैं कि विभिन्न ट्रांसपोर्ट में कौन से स्तर आउटपुट होंगे।
  • ट्रांसपोर्ट: लॉग आउटपुट करने के तरीके। बिल्ट-इन: Console, File, Http, Stream। आप अपने स्वयं के ट्रांसपोर्ट बना सकते हैं।
  • फ़ॉर्मेट: लॉग के स्वरूप को अनुकूलित करना (JSON, timestamp, रंगीन आउटपुट)।
  • फ़ाइल रोटेशन: अतिरिक्त मॉड्यूल winston-daily-rotate-file के माध्यम से, आप दिन या आकार के अनुसार स्वचालित रूप से नई लॉग फ़ाइलें बना सकते हैं।
  • मेटाडेटा: अतिरिक्त संदर्भ पास करना (जैसे, अनुरोध ID, उपयोगकर्ता नाम)।

TypeScript में कोड उदाहरण

कंसोल और फ़ाइल में आउटपुट के साथ एक सरल लॉगर बनाएँ:

import winston from 'winston';

const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new winston.transports.Console({ format: winston.format.combine( winston.format.colorize(), winston.format.simple() ) }), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ]});

// उपयोगlogger.info('सर्वर पोर्ट 3000 पर शुरू हुआ');logger.error('डेटाबेस से कनेक्शन में त्रुटि', { database: 'main' });

इस उदाहरण में: सूचनात्मक संदेश कंसोल (रंगीन) और combined.log फ़ाइल में आउटपुट होते हैं, जबकि त्रुटियाँ अतिरिक्त रूप से error.log में आउटपुट होती हैं। लॉग का प्रारूप टाइमस्टैम्प के साथ JSON है।

Winston का उपयोग कब करें?

  • त्रुटियों की निगरानी के लिए production वातावरण में।
  • माइक्रोसर्विस आर्किटेक्चर में केंद्रीकृत भंडारण में लॉग एकत्र करने के लिए।
  • उपयोगकर्ता क्रियाओं के ऑडिट की आवश्यकता होने पर।
  • उन प्रोजेक्ट्स में जहाँ ELK (Elasticsearch, Logstash, Kibana) या अन्य सिस्टम का उपयोग करके लॉग विश्लेषण की आवश्यकता होती है।

Winston TypeScript में लॉगिंग के लिए एक उद्योग मानक है। इसे सेट करना आसान है, लेकिन यह जटिल आवश्यकताओं के अनुसार स्केल भी होता है।

अनुशंसाएँ