C++ के लिए लॉगिंग: सर्वश्रेष्ठ लाइब्रेरी और समाधान

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

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

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

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



लॉगिंग किसी भी गंभीर C++ प्रोजेक्ट का एक महत्वपूर्ण घटक है। यह प्रोग्राम के निष्पादन को ट्रैक करने, त्रुटियों का पता लगाने, प्रदर्शन का विश्लेषण करने और उपयोगकर्ता क्रियाओं का ऑडिट करने में मदद करता है। Python के विपरीत, जहाँ अंतर्निहित logging मॉड्यूल एक वास्तविक मानक है, C++ में कोई एकीकृत अंतर्निहित समाधान नहीं है। हालाँकि, समुदाय ने कई शक्तिशाली और लचीली लाइब्रेरी बनाई हैं। इस लेख में, हम उनमें से सर्वश्रेष्ठ पर चर्चा करेंगे: spdlog, Google glog, Boost.Log और Easylogging++।



लॉगिंग लाइब्रेरी चुनने के मानदंड

समीक्षा पर आगे बढ़ने से पहले, यह समझना महत्वपूर्ण है कि चुनते समय किन बातों पर ध्यान देना चाहिए:

  • प्रदर्शन: एप्लिकेशन की गति पर न्यूनतम प्रभाव।
  • लचीलापन: प्रारूपों, लॉगिंग स्तरों (DEBUG, INFO, WARN, ERROR) और आउटपुट (फ़ाइल, कंसोल, syslog) को कॉन्फ़िगर करने की क्षमता।
  • एकीकरण में आसानी: छोटे प्रोजेक्ट के लिए header-only लाइब्रेरी बेहतर होती हैं।
  • मल्टीथ्रेडिंग समर्थन: थ्रेड-सुरक्षा और एसिंक्रोनस राइटिंग।
  • लाइसेंस: व्यावसायिक प्रोजेक्ट के साथ संगतता (MIT, Apache, Boost)।


1. spdlog — सबसे तेज़ और आधुनिक

spdlog एक header-only लाइब्रेरी (वैकल्पिक रूप से कंपाइल करने योग्य) है, जो C++11/14/17 में लिखी गई है। यह अपनी बिजली की गति और न्यूनतम मेमोरी खपत के कारण सबसे लोकप्रिय मानी जाती है। spdlog एसिंक्रोनस लॉगिंग का समर्थन करता है, जो उच्च-लोड सिस्टम के लिए विशेष रूप से महत्वपूर्ण है।

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

  • बॉक्स से बाहर थ्रेड-सुरक्षा।
  • कई सिंक (sinks): फ़ाइल, कंसोल, syslog, rotatable files, daily files।
  • कस्टम फ़ॉर्मेटर का समर्थन (fmtlib पर आधारित)।
  • संदेश कतार के साथ एसिंक्रोनस मोड।
  • सशर्त लॉगिंग।

उपयोग का उदाहरण:

#include "spdlog/spdlog.h"#include "spdlog/sinks/basic_file_sink.h"

int main() { // फ़ाइल में लिखने वाला लॉगर बनाएँ auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/app.log"); spdlog::set_default_logger(file_logger); spdlog::set_level(spdlog::level::debug);

// संदेश लॉग करें spdlog::info("एप्लिकेशन शुरू हुआ"); spdlog::warn("संदिग्ध व्यवहार का पता चला: {}", 42); spdlog::error("गंभीर त्रुटि: {}", errno);

// एसिंक्रोनस लॉगिंग spdlog::flush_every(std::chrono::seconds(3)); return 0;}

कब चुनें: आधुनिक प्रोजेक्ट के लिए जहाँ गति महत्वपूर्ण है। गेम, रियल-टाइम सर्वर और एम्बेडेड सिस्टम के लिए आदर्श।



2. Google glog — समय-परीक्षित मानक

Google glog (Google Logging Library) Google द्वारा आंतरिक उपयोग के लिए विकसित एक लाइब्रेरी है। यह सरल, विश्वसनीय है और दुनिया भर के हजारों प्रोजेक्ट में उपयोग की जाती है। glog सबसे तेज़ होने का प्रयास नहीं करता, लेकिन प्रोडक्शन में लॉगिंग के लिए सभी आवश्यक कार्य प्रदान करता है।

विशेषताएं:

  • आकार के अनुसार लॉग का स्वचालित रोटेशन।
  • लॉगिंग स्तर: INFO, WARNING, ERROR, FATAL (abort के साथ)।
  • सशर्त लॉगिंग (LOG_IF, LOG_EVERY_N)।
  • घातक त्रुटियों पर कॉल स्टैक का समर्थन।
  • न्यूनतम निर्भरता — केवल pthreads।

उपयोग का उदाहरण:

#include <glog/logging.h>

int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); FLAGS_log_dir = "./logs"; FLAGS_minloglevel = google::INFO;

LOG(INFO) << "सर्वर पोर्ट पर शुरू हुआ " << 8080; LOG(WARNING) <

अनुशंसाएँ