Rust:
लॉगिंग
कैसे करें:
चलिए log
crate का उपयोग करके Rust में एक बुनियादी लॉगिंग स्थापना सेटअप करते हैं, जो एक लॉगिंग फ़साड प्रदान करता है, और env_logger
जो log
crate के लिए एक लॉगिंग क्रियान्वयन है। सबसे पहले, उन्हें अपनी Cargo.toml में जोड़ें:
[dependencies]
log = "0.4.14"
env_logger = "0.9.0"
अब, अपने main.rs
में लॉगर को सेट अप करें और प्रारंभ करें:
use log::{info, warn};
fn main() {
env_logger::init();
info!("यह एक जानकारी संदेश है।");
warn!("यह एक चेतावनी संदेश है।");
}
अपने एप्लिकेशन को RUST_LOG=info cargo run
के साथ चलाएं, और आपको आउटपुट देखने को मिलेगा:
INFO: यह एक जानकारी संदेश है।
WARN: यह एक चेतावनी संदेश है।
RUST_LOG
एनवायरनमेंट वेरिएबल को error
, warn
, info
, debug
, या trace
में सेट करके खेलें ताकि आप अपने लॉग्स की वर्बोसिटी को नियंत्रित कर सकें।
गहराई से समझ:
लॉगिंग की अवधारणा कुछ नई नहीं है; यह कंप्यूटिंग के शुरुआती दिनों से चली आ रही है। सॉफ्टवेयर में लॉगिंग आम होने से पहले, डेवलपर्स प्रिंट स्टेटमेंट्स या डीबगर उपकरणों जैसे प्राथमिक तरीकों पर निर्भर करते थे ताकि प्रोग्राम निष्पादन को ट्रेस कर सकें। जैसे-जैसे प्रोग्रामों में जटिलता बढ़ी, वैसे-वैसे लॉगिंग के संरचित दृष्टिकोण की आवश्यकता भी बढ़ती गई।
Rust में, log
crate लॉगिंग क्रियान्वयन के विवरणों को अलग कर देती है, जिससे डेवलपर्स को विभिन्न लॉगिंग बैकएंड्स को प्लग इन करने की अनुमति मिलती है। जबकि env_logger
एक सामान्य विकल्प है, fern
, slog
, या tracing
जैसे विकल्प भी हैं, प्रत्येक के अपने सेट ऑफ फीचर्स और कॉन्फिगरेशन विकल्प होते हैं।
लॉगिंग को लागू करते समय कुछ विचार निम्नलिखित हैं:
लॉग स्तर: वर्बोसिटी को नियंत्रित करना महत्वपूर्ण है। Rust का
log
crate कई लॉग स्तर निर्दिष्ट करता है: एरर, वार्न, इन्फो, डीबग, और ट्रेस, जो गंभीरता में कम होते जाते हैं।प्रदर्शन: लॉगिंग प्रदर्शन को प्रभावित कर सकता है। सही तरीके से उपयोग करना महत्वपूर्ण है, सुनिश्चित करने के लिए की प्रदर्शन-क्रिटिकल पथों में या उत्पादन में अत्यधिक वर्बोस लॉग्स से बचें।
संरचित लॉगिंग: आधुनिक बेस्ट प्रैक्टिसेस में संरचित लॉगिंग शामिल हैं, जहां लॉग्स को JSON जैसे मशीन-पढ़ने योग्य फॉर्मेट में लिखा जाता है।
slog
जैसी लाइब्रेरी रस्ट में संरचित लॉगिंग के लिए अनुमति देती हैं, जिसे लॉग मैनेजमेंट सिस्टम्स जैसे ELK Stack या Splunk का उपयोग करके इंडेक्स और क्वेरी किया जा सकता है।असिंक्रोनस लॉगिंग: मुख्य एप्लिकेशन पर प्रभाव को कम से कम करने के लिए, लॉगिंग को असिंक्रोनस रूप से किया जा सकता है। यह अक्सर लॉगिंग लाइब्रेरी द्वारा एक इन-मेमोरी क्यू में लिखने और एक अलग थ्रेड द्वारा क्यू को प्रोसेस करके लॉग्स को गंतव्य पर लिखने से प्राप्त की जा सकती है।
कॉन्फिगरेशन: कई लॉगिंग फ्रेमवर्क्स एनवायरनमेंट वेरिएबल्स, कॉन्फिगरेशन फाइल्स, और/या कोड के माध्यम से कॉन्फिगरेशन का समर्थन करते हैं। यह लचीलापन विभिन्न परिवेशों (विकास, स्टेजिंग, उत्पादन) में विभिन्न आउटपुट को ठीक-ठाक बनाने के लिए महत्वपूर्ण है।
यह भी देखें
log
crate का दस्तावेज़ीकरण: https://docs.rs/log/env_logger
crate का दस्तावेज़ीकरण: https://docs.rs/env_logger/- Rust by Example logging पेज: https://doc.rust-lang.org/rust-by-example/std_misc/log.html
slog
crate, एक वैकल्पिक लॉगिंग फ्रेमवर्क: https://github.com/slog-rs/slog- Tracing, Rust प्रोग्रामों के लिए एक फ्रेमवर्क जो उन्हें इंस्ट्रूमेंट करता है: https://crates.io/crates/tracing