2015-08-18 2 views
9

मैं एक लॉगिंग लाइब्रेरी की मूल बातें समझना चाहता हूं।लॉगिंग लाइब्रेरी का अर्थ और उद्देश्य क्या है?

  1. लॉगिंग लाइब्रेरी का उद्देश्य वास्तव में क्या है? मैं समझता हूं कि एक लॉग मूल रूप से निष्पादन के दौरान आपकी आवेदन प्रक्रिया के बारे में जानकारी है। ऐसा करने का एक तरीका सीधे फ़ाइल में जानकारी लिखना है।
  2. लॉगिंग उद्देश्यों के लिए glog जैसी समर्पित लाइब्रेरी को डिज़ाइन करने का उद्देश्य क्या है? क्या लॉगिंग की मेरी समझ सही है, या क्या मुझे इसे बदलने की ज़रूरत है? क्या कोई लॉगिंग लाइब्रेरी का उपयोग करने के महत्व को प्रदर्शित करने के लिए व्यावहारिक उदाहरण दे सकता है?
  3. लॉगिंग लाइब्रेरी चुनते समय किसी को क्या विशेषताओं को देखना चाहिए?
  4. कार्यान्वयन के दौरान लॉगिंग प्रभावी ढंग से कैसे नियोजित किया जा सकता है? अपने आवेदन के निष्पादन के दौरान
+3

लॉगिंग: कुछ भी उपयोगी है जो उन 3am डीबगिंग सत्रों के दौरान महसूस किया गया दर्द कम कर देता है। एक मानक पुस्तकालय का उपयोग करने से आप अनुभवी लेखकों द्वारा ली गई प्राथमिकताओं और डिजाइन विकल्पों का फायदा उठा सकते हैं। – Bathsheba

+2

कुशल आईओ का उपयोग कर थ्रेड सुरक्षित फैशन में एक ही लक्ष्य के लिए लगातार, गलती सहिष्णु संरचित डेटा लिखना गैर-मामूली हो सकता है ... –

+0

शुरुआत के लिए यह अधिक विस्तृत उत्तर प्राप्त करने में मदद करेगा या कम से कम एक लिंक जो मुद्दों को बताता है स्पष्ट रूप से। –

उत्तर

12

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

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

एक लॉगिंग लाइब्रेरी कार्यक्षमता जोड़ती है जो लॉगिंग के लिए उपयोगी होती है और एक साधारण प्रिंटफ़ से उपलब्ध चीज़ों से परे जाती है। इसमें चीजें शामिल हैं:

  • डीबग बनाम रिलीज बिल्ड और रन-टाइम सेटिंग्स जैसे -वरबोज ध्वज जैसे कारकों के आधार पर लॉगिंग की मात्रा को नियंत्रित करने की क्षमता।
  • 'चैनल' की अवधारणा जिसे स्वतंत्र रूप से सक्षम, अक्षम या किसी विशेष वर्बोजिटी पर सेट किया जा सकता है। उदाहरण के लिए, ग्राफिक्स समस्या को डीबग करने के लिए आप 'नेटवर्क' और 'ऑडियो' चैनलों को म्यूट करते समय 'ग्राफिक्स' चैनल अधिकतम वर्बोजिटी पर सेट कर सकते हैं।
  • नेटवर्क पर रिमोट डेटाबेस पर लॉग इन करने के लिए डिस्क पर स्थानीय फ़ाइल में लॉगिंग से लेकर एक लचीला बैक एंड।
  • थ्रेड सुरक्षा ताकि लॉगिंग स्वयं को कई अलग-अलग धागे से संभावित रूप से लॉग इन करते समय स्वयं व्यवहार करे।
  • टाइमस्टैम्प और किसी अन्य प्रासंगिक जानकारी (चैनल, वर्बोसिटी स्तर इत्यादि) के साथ लॉग प्रविष्टियों का स्वचालित टैगिंग।

कैसे एक प्रवेश पुस्तकालय का उपयोग करने के लिए के रूप में, कि आपके आवेदन पर कुछ हद तक निर्भर है, लेकिन यहाँ कुछ सामान्य सुझाव है:

  • यदि आपके प्रवेश पुस्तकालय प्रदान करता है चैनलों और शब्दाडंबर के स्तर का अच्छा उपयोग करें उन्हें (और यह चाहिए)। यह आपके एप्लिकेशन के बढ़ने के साथ-साथ लॉग संदेशों की एक बड़ी मात्रा बनने का प्रबंधन करने में आपकी सहायता करेगा।
  • यदि आपको एक अप्रत्याशित लेकिन गैर-घातक स्थिति का सामना करना पड़ता है और इसे संभालता है, तो इसके बारे में कुछ जानकारी लॉग इन करें यदि यह बाद में अप्रत्याशित समस्याओं का कारण बनती है।
  • एप्लिकेशन स्टार्टअप पर, किसी भी जानकारी को लॉग इन करें जो बाद में दुर्लभ त्रुटियों को पुन: उत्पन्न करने के लिए उपयोगी हो सकता है यदि आपको किसी ग्राहक से बग या क्रैश रिपोर्ट प्राप्त होती है। बहुत अधिक जानकारी के पक्ष में एरर, आप कभी नहीं जानते कि पहले से क्या उपयोगी हो सकता है। इसमें सीपीयू टाइप, जीपीयू मॉडल और ड्राइवर संस्करण, उपलब्ध मेमोरी, ओएस संस्करण, उपलब्ध हार्ड ड्राइव स्पेस इत्यादि शामिल हो सकते हैं।
  • लॉग कुंजी राज्य संक्रमण ताकि आप ट्रैक कर सकें कि आपका एप्लिकेशन किस स्थिति में था और यह कैसे हुआ आप एक मुद्दा डीबग कर रहे हैं।
+1

यह बहुत उपयोगी है। अनेक अनेक धन्यवाद। –

+0

यह एक उत्कृष्ट उत्तर है, लेकिन @ उज्जवल आर्यन, आपको यह भी सीखना चाहिए कि डीबगिंग करते समय पीडीबी फाइलों का उपयोग कैसे करें। – Bathsheba

+0

हाँ। मैं जीएनयू डीबगर का उपयोग करता हूं। लेकिन मैं एक और ओपन-सोर्स प्रोजेक्ट का सोर्स कोड पढ़ रहा था और मैं ग्लोग लाइब्रेरी के उपयोग में आया था जिसका व्यापक रूप से इस्तेमाल किया गया था। मुझे ऐसी पुस्तकालयों के उपयोग के बारे में ऑनलाइन कोई जानकारी नहीं मिली और उन्हें कुशलता से कैसे नियोजित किया जा सकता है। तो, मैंने सवाल पूछा। मुझे नहीं पता कि यह बहुत व्यापक रूप से क्यों ध्वजांकित किया गया है। इसके बारे में कोई संसाधन ऑनलाइन नहीं है और दुर्भाग्यवश अधिकांश उभरते कोडर ऐसे बुनियादी प्रश्नों के साथ मुद्दों का सामना करते हैं। –

2

कई कार्यक्रम लॉगिंग का उपयोग करते हैं, और हर बार पहिया को फिर से आविष्कार करने के लिए बहुत कम बिंदु है, भले ही कोड अपेक्षाकृत सरल हो।

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

अंत में, यह अन्य डेवलपर्स के लिए कोड को पढ़ने में आसान बनाता है क्योंकि उन्हें यह पता लगाने की आवश्यकता नहीं है कि आपने अपना कस्टम लॉगिंग कैसे कार्यान्वित किया है।

संबंधित मुद्दे