TypeScript लॉगिंग: शुरुआती के लिए सर्वोत्तम अभ्यास और ट्यूटोरियल

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

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

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

TypeScript एप्लिकेशन लॉगिंग का परिचय

\n\n

लॉगिंग प्रोग्राम के चलने के दौरान होने वाली घटनाओं को रिकॉर्ड करने की प्रक्रिया है। TypeScript एप्लिकेशन, खासकर Node.js वातावरण में चलने वाले, के लिए सही लॉगिंग सिर्फ एक अच्छी आदत नहीं, बल्कि डिबगिंग, मॉनिटरिंग और एरर विश्लेषण के लिए एक महत्वपूर्ण उपकरण है।

\n\n

कई शुरुआती डेवलपर केवल console.log() का उपयोग करते हैं। लेकिन production वातावरण में यह तरीका अप्रभावी है: यह महत्व के स्तरों को प्रबंधित करने, संदेशों को फ़िल्टर करने या फ़ाइलों में सहेजने की सुविधा नहीं देता। इस लेख में, हम सीखेंगे कि TypeScript में एक पेशेवर लॉगिंग सिस्टम कैसे बनाया जाए।

\n\n

Production में console.log का उपयोग क्यों न करें?

\n\n

एक सामान्य उदाहरण देखें:

\n\n
// खराब तरीका - सीधे console.log का उपयोग\nfunction processOrder(orderId: string): void {\n  console.log(`Processing order ${orderId}`);\n  try {\n    // बिज़नेस लॉजिक\n  } catch (error) {\n    console.error(`Error processing order: ${error}`);\n  }\n}\n
\n\n

इस तरीके की समस्याएं:

\n
    \n
  • लॉगिंग स्तरों का अभाव: debug संदेशों को गंभीर त्रुटियों से अलग नहीं किया जा सकता।
  • \n
  • कोई फ़ॉर्मेटिंग नहीं: बड़े डेटा को पढ़ना मुश्किल होता है।
  • \n
  • रीडायरेक्ट नहीं किया जा सकता: सभी संदेश केवल stdout/stderr पर जाते हैं।
  • \n
  • प्रदर्शन समस्याएं: कंसोल में सिंक्रोनस राइटिंग एप्लिकेशन को धीमा कर सकती है।
  • \n
\n\n

TypeScript में लॉगिंग के सर्वोत्तम अभ्यास

\n\n

1. लॉगिंग लाइब्रेरी का चयन

\n\n

TypeScript के लिए दो लोकप्रिय लाइब्रेरीज़ में से एक का उपयोग करने की सलाह दी जाती है:

\n
    \n
  • Winston — ट्रांसपोर्ट (फ़ाइल, कंसोल, डेटाबेस) के साथ एक शक्तिशाली और लचीला लॉगर।
  • \n
  • Pino — एक अत्यंत तेज़ लॉगर, जो high-load एप्लिकेशन के लिए आदर्श है।
  • \n
\n\n

Winston इंस्टॉल करें:

\n
npm install winston\nnpm install @types/winston --save-dev\n
\n\n

2. कॉन्फ़िगरेबल लॉगर बनाना

\n\n

एक logger.ts मॉड्यूल बनाएं:

\n\n
import winston from 'winston';\n\nconst logger = winston.createLogger({\n  level: process.env.LOG_LEVEL || 'info',\n  format: winston.format.combine(\n    winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),\n    winston.format.errors({ stack: true }),\n    winston.format.json()\n  ),\n  transports: [\n    new winston.transports.Console({\n      format: winston.format.combine(\n        winston.format.colorize(),\n        winston.format.simple()\n      )\n    }),\n    new winston.transports.File({ \n      filename: 'logs/error.log', \n      level: 'error' \n    }),\n    new winston.transports.File({ \n      filename: 'logs/combined.log' \n    })\n  ]\n});\n\nexport default logger;\n
\n\n

अब किसी भी मॉड्यूल में लॉगर का उपयोग करें:

\n
import logger from './logger';\n\nfunction getUser(id: string) {\n  logger.info(`Fetching user with ID: ${id}`);\n  try {\n    // उपयोगकर्ता प्राप्त करने का लॉजिक\n    logger.debug('User data retrieved successfully');\n  } catch (error) {\n    logger.error('Failed to fetch user', { userId: id, error });\n  }\n}\n
\n\n

3. लॉगिंग स्तरों का उपयोग

\n\n

मानक स्तर (कम से अधिक महत्वपूर्ण):

\n
    \n
  • debug — विस्तृत डिबग जानकारी (केवल विकास के लिए)।
  • \n
  • info — सामान्य सूचनात्मक संदेश।
  • \n
  • warn — संभावित समस्याओं के बारे में चेतावनी।
  • \n
  • error — त्रुटियां जिन पर ध्यान देने की आवश्यकता है।
  • \n
\n\n

एनवायरनमेंट वेरिएबल के माध्यम से लॉगिंग स्तर सेट करें:

\n
// .env फ़ाइल में\nLOG_LEVEL=debug  # विकास के लिए\nLOG_LEVEL=warn   # production के लिए\n
\n\n

4. संरचित लॉगिंग

\n\n

अतिरिक्त जानकारी पास करें

ब्लॉग

पुस्तक अनुशंसाएँ