TypeScript में लॉगिंग: 2024 में सर्वश्रेष्ठ लाइब्रेरी और उपकरण

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

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

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

TypeScript के लिए लॉगिंग: सर्वश्रेष्ठ समाधान

लॉगिंग किसी भी production-एप्लिकेशन का एक महत्वपूर्ण घटक है। TypeScript-इकोसिस्टम के लिए कई लाइब्रेरी मौजूद हैं, जिनमें से प्रत्येक अद्वितीय क्षमताओं का सेट प्रदान करती है। इस लेख में हम पाँच सर्वश्रेष्ठ समाधानों पर विचार करेंगे: Winston, Pino, Bunyan, Log4js और TSLog। आप उनकी ताकत, कॉन्फ़िगरेशन की विशेषताएं जानेंगे और तैयार कोड उदाहरण प्राप्त करेंगे।



1. Winston — बहुमुखी मानक

Winston TypeScript के पूर्ण समर्थन के साथ Node.js के लिए सबसे लोकप्रिय लॉगिंग लाइब्रेरी है। यह ट्रांसपोर्ट (लॉग कहाँ भेजें) और फ़ॉर्मेटिंग की एक शक्तिशाली प्रणाली प्रदान करती है।



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(), new winston.transports.File({ filename: 'error.log', level: 'error' }) ]});

logger.info('एप्लिकेशन शुरू हुआ', { service: 'user-service' });logger.error('DB कनेक्शन में त्रुटि', { error: err.message });


लाभ:

  • लचीली ट्रांसपोर्ट प्रणाली (फ़ाइलें, कंसोल, HTTP, MongoDB, Elasticsearch)
  • winston-daily-rotate-file के माध्यम से लॉग रोटेशन का अंतर्निहित समर्थन
  • TypeScript के साथ उत्कृष्ट एकीकरण — पूर्ण टाइपिंग
  • प्रोफाइलर और APM-सिस्टम के साथ संगतता


2. Pino — अत्यधिक तेज़ लॉगर

Pino प्रदर्शन पर केंद्रित है — यह Winston से 5-10 गुना तेज़ है। high-load सिस्टम और माइक्रोसर्विसेज के लिए आदर्श विकल्प।



import pino from 'pino';

const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true } }});

logger.info({ user: { id: 123 } }, 'उपयोगकर्ता प्रमाणित हुआ');


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

  • न्यूनतम CPU और मेमोरी खपत
  • Node.js streams के लिए मूल समर्थन
  • ऑब्जेक्ट्स का कुशल सीरियलाइज़ेशन
  • संदर्भित लॉगिंग के लिए child-लॉगर्स का समर्थन


3. Bunyan — Joyent से संरचित लॉगिंग

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



import bunyan from 'bunyan';

const logger = bunyan.createLogger({ name: 'myapp', level: 'info', serializers: { req: bunyan.stdSerializers.req, err: bunyan.stdSerializers.err }});

logger.info({ req: request }, 'आने वाला अनुरोध');


विशेषताएं:

  • HTTP-अनुरोधों और त्रुटियों के लिए अंतर्निहित सीरियलाइज़र
  • अंतिम N रिकॉर्ड संग्रहीत करने के लिए ringbuffer का समर्थन
  • कंसोल में फ़ॉर्मेटेड आउटपुट के लिए bunyan CLI उपयोगिता
  • ELK-स्टैक के साथ सरल एकीकरण


4. Log4js — Java से परिचित दृष्टिकोण

Log4js लोकप्रिय Java-फ्रेमवर्क Log4j का पोर्ट है। यह स्तरों और अपेंडरों के माध्यम से परिचित कॉन्फ़िगरेशन प्रदान करता है।



import log4js from 'log4js';

log4js.configure({ appenders: { out: { type: 'stdout' }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' } }});

const logger = log4js.getLogger();logger.debug('कनेक्शन डीबग कर रहा है');logger.error('गंभीर त्रुटि');


मजबूत पक्ष:

  • लचीली श्रेणी और फ़िल्टर प्रणाली
  • कई अपेंडरों का समर्थन (फ़ाइलें, डेटाबेस, TCP)
  • विभिन्न मॉड्यूल के लिए स्तरों को ओवरराइड करने की क्षमता
  • क्लस्टरिंग के लिए अंतर्निहित समर्थन


5. TSLog — TypeScript के लिए हल्का समाधान

TSLog एक न्यूनतम लाइब्रेरी है जो विशेष रूप से TypeScript के लिए लिखी गई है। यह छोटे प्रोजेक्ट्स के लिए आदर्श है।

अनुशंसाएँ