Rust के लिए log लाइब्रेरी क्या है?
log लाइब्रेरी Rust इकोसिस्टम में लॉगिंग के लिए एक मानक एब्स्ट्रैक्शन है। यह एक हल्का फेसाड (facade) प्रदान करती है, जो डेवलपर्स को किसी विशिष्ट लॉगर इम्प्लीमेंटेशन (जैसे env_logger, simple_logger या slog) से बंधे बिना लॉग उत्पन्न करने वाला कोड लिखने की अनुमति देती है। यह Python में लोकप्रिय logging लाइब्रेरीज़ के समान है, लेकिन प्रदर्शन और मेमोरी सुरक्षा पर ध्यान केंद्रित करती है।
log लाइब्रेरी की आवश्यकता क्यों है?
log का मुख्य उद्देश्य लॉग के जनरेशन और उनके प्रोसेसिंग को अलग करना है। आप अपने कोड में info!, warn!, error! मैक्रोज़ का उपयोग कर सकते हैं, और बाद में एक बैकएंड (जैसे env_logger) जोड़कर आउटपुट को कंसोल, फ़ाइल या मॉनिटरिंग सिस्टम पर रीडायरेक्ट कर सकते हैं। यह विशेष रूप से इसके लिए उपयोगी है:
- जटिल सिस्टम की डिबगिंग
- प्रोडक्शन एप्लिकेशन की मॉनिटरिंग
- ऐसी लाइब्रेरीज़ बनाना जो उपयोगकर्ता पर लॉगिंग का तरीका न थोपें
इंस्टॉलेशन
Cargo.toml में जोड़ें:
[dependencies]log = "0.4"env_logger = "0.10" # कंसोल आउटपुट के लिएफिर cargo build चलाएँ।
मुख्य कार्यक्षमताएँ
- लॉगिंग मैक्रोज़:
error!,warn!,info!,debug!,trace!—println!की तरह स्ट्रिंग फ़ॉर्मेटिंग के साथ। - फ़िल्टरिंग स्तर:
RUST_LOGएनवायरनमेंट वेरिएबल के माध्यम से न्यूनतम स्तर (जैसे, केवल त्रुटियाँ) सेट किया जा सकता है। - विस्तारशीलता:
Logट्रेट के माध्यम से कस्टम लॉगर्स का समर्थन। - सुरक्षा: यदि स्तर बंद है तो लॉग प्रदर्शन को प्रभावित नहीं करते।
Rust में कोड उदाहरण
use log::{info, warn, error};
fn main() { // लॉगर का इनिशियलाइज़ेशन (env_logger) env_logger::init();
let user = "Alice"; let status = 200;
info!("उपयोगकर्ता {} सिस्टम में लॉग इन हुआ", user); warn!("प्रतिक्रिया स्थिति: {} — संभवतः पुराना कैश", status); error!("डेटाबेस से कनेक्ट नहीं हो सका: {}", "timeout");}RUST_LOG=info cargo run के साथ चलाएँ, ताकि info स्तर और उससे ऊपर के सभी संदेश देखे जा सकें।
कब उपयोग करें
log लाइब्रेरी इसके लिए आदर्श है:
- किसी भी Rust एप्लिकेशन के लिए जहाँ एक मानक लॉगिंग सिस्टम की आवश्यकता है (CLI, सर्वर, उपयोगिताएँ)।
- लाइब्रेरीज़ के लिए — ताकि उपयोगकर्ता स्वयं बैकएंड चुन सके।
- Python से माइग्रेट करने वाले प्रोजेक्ट्स के लिए: अवधारणा
logging.getLogger()के समान है।
log से बचें यदि आपको एसिंक्रोनस फ़ाइल राइटिंग या स्ट्रक्चर्ड JSON लॉग की आवश्यकता है — ऐसे मामलों में tracing या slog अधिक उपयुक्त हैं।
पुस्तकालय में भी
Predis: PHP के लिए Redis क्लाइंट - इंस्टॉलेशन, कनेक्शन और उदाहरण
JavaScript (Node.js) में Event Bus और Observer पैटर्न: उदाहरण सहित
Kotlin में Markdown के साथ काम करना: लाइब्रेरीज़, पार्सिंग और जनरेशन
Rust के लिए कार्य कतारें: लोकप्रिय लाइब्रेरी और टूल्स का अवलोकन
Swift अनुप्रयोगों का कॉन्फ़िगरेशन: SwiftyConfig लाइब्रेरी