TypeScript:
लॉगिंग
कैसे करें:
TypeScript में, आप साधारण कंसोल मेथड का उपयोग करके आसानी से बेसिक लॉगिंग को लागू कर सकते हैं या winston
या pino
जैसी पुस्तकालयों के साथ उन्नत लॉगिंग को एकीकृत कर सकते हैं। यहां console.log
का उपयोग करते हुए एक सरल उदाहरण दिया गया है और winston
के साथ एक अधिक उन्नत उदाहरण है।
// मूल कंसोल लॉगिंग
console.log('जानकारी: एप्लिकेशन प्रारम्भ हो रहा है...');
console.error('त्रुटि: डेटा पुनःप्राप्त करने में असमर्थ।');
// नमूना आउटपुट
// जानकारी: एप्लिकेशन प्रारम्भ हो रहा है...
// त्रुटि: डेटा पुनःप्राप्त करने में असमर्थ।
अधिक ठोस लॉगिंग के लिए, आइए winston
सेटअप करें:
import { createLogger, format, transports } from 'winston';
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
transports: [
new transports.Console(),
new transports.File({ filename: 'combined.log' })
]
});
logger.info('सर्वर प्रारंभ हो गया!');
logger.warn('कम डिस्क स्थान की चेतावनी।');
logger.error('डाटाबेस से संबंध बनाने में विफल।');
// नमूना आउटपुट में combined.log
// 2023-01-20 14:42:07 जानकारी: सर्वर प्रारंभ हो गया!
// 2023-01-20 14:42:09 चेतावनी: कम डिस्क स्थान की चेतावनी।
// 2023-01-20 14:42:12 त्रुटि: डाटाबेस से संबंध बनाने में विफल।
गहराई से समझ:
कंप्यूटिंग के संदर्भ में लॉगिंग की अवधारणा प्रोग्रामिंग के प्राचीन दिनों से है, जहां शब्द स्वयं “लॉगबुक,” एक नौटिकल रिकॉर्ड-कीपिंग सिस्टम से निकला है। ऐतिहासिक रूप से, प्रोग्राम इवेंट्स अक्सर भौतिक प्रिंटआउट्स या टर्मिनल आउटपुट्स में लॉग किए जाते थे, विशेष रूप से मेनफ्रेम युग के दौरान।
आज के लिए आगे बढ़ते हुए, आपके पास विभिन्न लॉगिंग ज़रूरतों के अनुकूल विभिन्न टूल्स और पुस्तकालयें हैं, साधारण टेक्स्ट फ़ाइलों से लेकर जटिल लॉग मैनेजमेंट सिस्टम तक। winston
के विकल्पों में pino
शामिल है, जो उच्च प्रदर्शन का दावा करता है, और Bunyan
, जो JSON-आधारित है। Node.js के साथ काम करते समय, लॉगिंग पुस्तकालय अक्सर लॉग्स को विभिन्न गंतव्यों तक पहुंचाने के लिए स्ट्रीम तंत्र प्रदान करते हैं, लॉग रोटेशन के लिए समर्थन, और अनुकूलन योग्य फॉर्मेटर्स का समर्थन करते हैं।
कार्यान्वयन की दृष्टि से, लॉग संदेश में आमतौर पर एक समयकल्पना, एक गंभीरता स्तर (जैसे की जानकारी, चेतावनी, त्रुटि) और वास्तविक संदेश होता है। अच्छे लॉगिंग अभ्यास के लिए, लॉग स्तरों को उचित रूप से वर्गीकृत करने, लॉग्स में संवेदनशील डेटा को शामिल नहीं करने और उच्च-थ्रूपुट अनुप्रयोगों में प्रदर्शन निहितार्थों पर विचार करने की सिफारिश की जाती है।