C:
लॉगिंग

कैसे:

C में, लॉगिंग को मूल फाइल ऑपरेशंस के साथ या अधिक सोफिस्टिकेटेड लाइब्रेरीज़ का उपयोग करके हासिल किया जा सकता है। सादगी के लिए, हम मानक आई/ओ लाइब्रेरी के साथ शुरू करेंगे। निम्नलिखित स्निपेट्स मूल लॉगिंग कार्यान्वयन को प्रदर्शित करते हैं।

सरल संदेश लॉग करने के लिए:

#include <stdio.h>

int main() {
    FILE *logFile;
    logFile = fopen("application.log", "a"); // लॉग फाइल को ऐपेंड मोड में खोलें
    
    if (logFile == NULL) {
        perror("लॉग फाइल खोलने में त्रुटि।");
        return -1;
    }
    
    fprintf(logFile, "अनुप्रयोग शुरू हो रहा है।\n");
    
    // आपके अनुप्रयोग का लॉजिक यहाँ पर
    
    fprintf(logFile, "अनुप्रयोग सफलतापूर्वक समाप्त हुआ।\n");
    fclose(logFile);
    
    return 0;
}

application.log में आउटपुट:

अनुप्रयोग शुरू हो रहा है।
अनुप्रयोग सफलतापूर्वक समाप्त हुआ।

समयांकन और लॉग स्तरों के साथ अधिक विस्तृत लॉग्स शामिल करने के लिए:

#include <stdio.h>
#include <time.h>

void logMessage(FILE *logFile, const char* level, const char* message) {
    time_t now;
    time(&now);
    char* datetime = ctime(&now);
    datetime[strlen(datetime)-1] = '\0'; // न्यूलाइन कैरेक्टर निकालें
    fprintf(logFile, "[%s] %s - %s\n", datetime, level, message);
}

int main() {
    FILE *logFile;
    logFile = fopen("detailed.log", "a");
    
    if (logFile == NULL) {
        perror("लॉग फाइल खोलने में त्रुटि।");
        return -1;
    }
    
    logMessage(logFile, "INFO", "अनुप्रयोग शुरू हो रहा है");
    // आपके अनुप्रयोग का लॉजिक यहाँ पर
    logMessage(logFile, "ERROR", "एक उदाहरण त्रुटि");
    
    fclose(logFile);
    
    return 0;
}

detailed.log में आउटपुट:

[Thu Mar 10 14:32:01 2023] INFO - अनुप्रयोग शुरू हो रहा है
[Thu Mar 10 14:32:02 2023] ERROR - एक उदाहरण त्रुटि

गहराई से:

C में लॉगिंग, जैसा कि दिखाया गया है, सरल फाइल ऑपरेशंस पर निर्भर करता है, जो प्रभावी है लेकिन पायथन के logging मॉड्यूल या जावा के Log4j जैसी अन्य भाषाओं में लॉगिंग सुविधाओं की शक्ति या लचीलापन के समान नहीं है। C में अधिक उन्नत लॉगिंग क्षमताओं के लिए, डेवलपर्स अक्सर जैसे कि यूनिक्स-पसंद सिस्टमों पर syslog लाइब्रेरी की ओर रुख करते हैं, जो सिस्टम-व्यापी लॉग प्रबंधन प्रदान करती है, या log4c जैसी थर्ड-पार्टी लाइब्रेरीज।

ऐतिहासिक रूप से, लॉगिंग प्रोग्रामिंग का एक अभिन्न अंग रहा है, प्रारंभिक प्रोग्रामिंग प्रथाओं के पीछे चलते हुए जहाँ प्रोग्राम फ्लो और त्रुटियों को ट्रैक करना और समझना मुख्य रूप से भौतिक प्रिंटआउट्स के माध्यम से किया जाता था। सिस्टमों के विकास के साथ, लॉगिंग अधिक सोफिस्टिकेटेड हो गई, अब विभिन्न गंभीरता के स्तरों, लॉग रोटेशन, और असिंक्रोनस लॉगिंग का समर्थन करती है।

जबकि C की मानक लाइब्रेरी लॉगिंग को लागू करने के लिए बुनियादी उपकरण प्रदान करती है, इसकी सीमाएँ अक्सर कस्टम लॉगिंग फ्रेमवर्क के निर्माण या अधिक समृद्ध और लचीले लॉगिंग समाधानों के लिए बाहरी लाइब्रेरीज़ के अपनाने की ओर ले जाती हैं। इन सीमाओं के बावजूद, सॉफ्टवेयर को डीबग और बनाए रखने में, विशेष रूप से उन वातावरणों में जहाँ बाहरी निर्भरताओं को कम से कम किया जाना है, C में मूल लॉकिंग को समझना और लागू करना महत्वपूर्ण है।