winston

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

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

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

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

Winston, Node.js वातावरण में लॉगिंग के लिए सबसे लोकप्रिय लाइब्रेरी है। यह एक सरल, सार्वभौमिक API प्रदान करता है जो आपको महत्व के विभिन्न स्तरों के साथ लॉग रिकॉर्ड करने, उन्हें फॉर्मेट करने और विभिन्न स्थानों (कंसोल, फ़ाइलें, डेटाबेस, बाहरी सेवाएँ) पर भेजने की अनुमति देता है। सरल console.log के विपरीत, winston लॉगिंग पर पूर्ण नियंत्रण देता है: आप आकार या तिथि के अनुसार लॉग रोटेशन सेट कर सकते हैं, स्तर (info, warn, error, debug) के अनुसार संदेशों को फ़िल्टर कर सकते हैं, मेटाडेटा (समय, अनुरोध आईडी) जोड़ सकते हैं और एक साथ कई ट्रांसपोर्ट का उपयोग भी कर सकते हैं। प्रोडक्शन एप्लिकेशन में निगरानी, डिबगिंग और ऑडिट के लिए यह एक अपरिहार्य उपकरण है।

स्थापना

npm या yarn के माध्यम से winston स्थापित करें:

npm install winston# याyarn add winston

मुख्य विशेषताएँ

  1. लॉगिंग स्तर: error, warn, info, http, verbose, debug, silly.
  2. ट्रांसपोर्ट: Console, File, HTTP, Stream और कस्टम ट्रांसपोर्ट।
  3. फॉर्मेट: JSON, सादा टेक्स्ट, टाइमस्टैम्प, रंगीन आउटपुट।
  4. एकाधिक ट्रांसपोर्ट का संयोजन: उदाहरण के लिए, त्रुटियाँ फ़ाइल में और info कंसोल में।
  5. कस्टम ट्रांसपोर्ट और फॉर्मेट: Logstash, Sentry, Papertrail और अन्य के साथ एकीकृत किया जा सकता है।
  6. लॉग रोटेशन: अतिरिक्त मॉड्यूल winston-daily-rotate-file के माध्यम से।
  7. अपवाद और अनहैंडल्ड रिजेक्शन: अनहैंडल त्रुटियों का स्वचालित कैप्चर।

जावास्क्रिप्ट (Node.js) पर कोड उदाहरण

const winston = require('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.warn('अपर्याप्त मेमोरी', { memoryUsage: process.memoryUsage() });try { throw new Error('कुछ टूट गया');} catch (err) { logger.error('अनुरोध प्रसंस्करण में त्रुटि', { error: err.message, stack: err.stack });}

कब उपयोग करें

Winston किसी भी Node.js प्रोजेक्ट के लिए आदर्श है जहाँ संरचित लॉगिंग की आवश्यकता होती है: वेब सर्वर (Express, Koa), माइक्रोसर्विसेज़, CLI उपयोगिताएँ, बॉट, ETL प्रक्रियाएँ। यह विशेष रूप से प्रोडक्शन वातावरण में उपयोगी है जहाँ केंद्रीय रूप से लॉग एकत्र करने, त्रुटियों का विश्लेषण करने और समस्याओं को जल्दी से खोजने की आवश्यकता होती है। यदि आपका प्रोजेक्ट TypeScript का उपयोग करता है, तो winston में प्रकारों के लिए पूर्ण समर्थन है।

विकल्प: pino (तेज़, छोटा), log4js (XML/JSON के माध्यम से कॉन्फ़िगरेशन), bunyan (JSON लॉग)। लेकिन winston अब भी सबसे लचीला और व्यापक समाधान बना हुआ है।

```

अनुशंसाएँ