आज, अधिकांश एप्लिकेशन और सिस्टम एप्लिकेशन समय-समय पर अपने काम की प्रक्रिया, त्रुटियों और विफलताओं के बारे में जानकारी को लॉग नामक विशेष लॉग में सहेजते हैं। अधिकांश सामान्य-उद्देश्य वाले ऑपरेटिंग सिस्टम ऐसी सेवाएँ प्रदान करते हैं जो आपको एक मानक प्रोग्रामिंग इंटरफ़ेस का उपयोग करके लॉग लिखने की अनुमति देती हैं।
ज़रूरी
- - सी संकलक;
- - विंडोज प्लेटफॉर्म एसडीके;
- - ग्लिबक के लिए पैकेज विकसित करें।
निर्देश
चरण 1
विंडोज परिवार के ऑपरेटिंग सिस्टम के तहत काम करने के लिए डिज़ाइन किए गए अपने एप्लिकेशन से सिस्टम लॉग में लॉग लिखने के लिए समर्थन जोड़ें।
एप्लिकेशन को ईवेंट स्रोत के रूप में पंजीकृत करने के लिए RegisterEventSource API फ़ंक्शन का उपयोग करें, लॉग में प्रविष्टि जोड़ने के लिए ReportEvent फ़ंक्शन और RegisterEventSource द्वारा लौटाए गए हैंडल को बंद करने के लिए DeregisterEventSource फ़ंक्शन का उपयोग करें।
एप्लिकेशन के प्रारंभ के दौरान RegisterEventSource को कॉल करना और लौटाए गए डिस्क्रिप्टर को हर समय सहेजना समझ में आता है, ताकि लॉग में प्रविष्टियां प्रोग्राम में विभिन्न स्थानों से रखी जा सकें। विंडोज लॉग में लिखने का सबसे सरल उदाहरण इस तरह दिख सकता है:
हैंडल hLog = RegisterEventSource (NULL, "MyApplicationName");
अगर (एचलॉग! = न्यूल)
{
अगर (रिपोर्टइवेंट (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "संदेश पाठ / 0", NULL))
{
// ईवेंट सफलतापूर्वक लॉग किया गया था
}
DeregisterEventSource (hLog);
}
रिपोर्टइवेंट फ़ंक्शन के शब्दार्थ के बारे में अधिक विवरण MSDN में https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx पर पाया जा सकता है। इसके अलावा, आपको सिस्टम रजिस्ट्री में एप्लिकेशन के निष्पादन योग्य मॉड्यूल के बारे में कुछ डेटा डालने की जरूरत है, और मॉड्यूल या किसी तृतीय-पक्ष गतिशील पुस्तकालय में एक विशिष्ट प्रारूप में संसाधन जोड़ने की आवश्यकता है। इवेंट लॉग सेवा के लिए रजिस्ट्री कुंजियों के बारे में अधिक जानकारी के लिए, https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx देखें।
चरण 2
Linux-संगत ऑपरेटिंग सिस्टम पर लॉगिंग आमतौर पर syslog डेमॉन का उपयोग करके किया जा सकता है। इस सेवा में फ़ंक्शंस के एक सेट के रूप में एक एप्लिकेशन-स्तरीय इंटरफ़ेस है, जिसकी घोषणाएँ syslog.h हेडर फ़ाइल में रखी गई हैं।
किसी एप्लिकेशन या लाइब्रेरी से syslog सेवा से कनेक्शन बनाने के लिए openlog फ़ंक्शन का उपयोग करें। लॉग में संदेश डालने के लिए syslog या vsyslog फ़ंक्शन को कॉल करें। रिकॉर्डिंग की घटनाओं के अंत के बाद या जब एप्लिकेशन बाहर निकलता है, तो क्लोजलॉग फ़ंक्शन को कॉल करके सेवा से कनेक्शन बंद करें। इसके अलावा, आप उन कॉल्स को अनदेखा करने के लिए सेटिंग्स को कॉन्फ़िगर कर सकते हैं जो सेटलॉगमास्क फ़ंक्शन का उपयोग करके एक विशिष्ट प्राथमिकता के साथ इवेंट रिकॉर्ड जोड़ते हैं। लॉग में संदेश लिखने का एक उदाहरण इस तरह दिख सकता है:
ओपनलॉग ("माईएप्लिकेशन", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication को PID% d के साथ लॉन्च किया गया", getuid ());
syslog (LOG_INFO, "सूचना संदेश!");
क्लोजलॉग ();
Syslog API फ़ंक्शन के पैरामीटर के बारे में अधिक जानकारी के लिए, libc जानकारी दस्तावेज़ देखें।
चरण 3
ईवेंट हठ सबसिस्टम के अपने स्वयं के कार्यान्वयन का उपयोग करके मनमानी फ़ाइलों में लॉग लिखें। इस समस्या के सबसे सरल समाधानों में से एक वैश्विक दायरे में कई फ़ंक्शन बनाना है, जिनमें से एक सूचना जोड़ने के मोड में एक विशिष्ट नाम के साथ एक फ़ाइल खोलता है, दूसरा इसे बंद कर देता है, और तीसरा एक संदेश स्ट्रिंग जोड़ता है जो इसे पास किया जाता है। इस फ़ाइल के लिए एक पैरामीटर। संकल्पनात्मक रूप से, यह समाधान लिनक्स में syslog प्रोग्रामिंग इंटरफ़ेस जैसा दिखता है।
फ़ाइल को खोलने और बंद करने के लिए क्रमशः C मानक पुस्तकालय के fopen और fclose कार्यों का उपयोग करें। फ़ाइल में जानकारी जोड़ने के लिए fwrite पर कॉल करें। आप प्लेटफ़ॉर्म-विशिष्ट फ़ंक्शंस (उदाहरण के लिए, Windows के अंतर्गत CreateFile) और उपयोग किए गए फ़्रेमवर्क के ऑब्जेक्ट के तरीकों का भी उपयोग कर सकते हैं जो फ़ाइलों के साथ काम करने की कार्यक्षमता को समाहित करते हैं।