Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

घटनाओं और त्रुटि संदेशों को ट्रैक करने के लिए रूबी में लॉग का उपयोग कैसे करें

लॉगिंग आपकी रूबी एप्लिकेशन क्या कर रही है, इसके बारे में जानकारी सहेजने की प्रक्रिया है।

यह विकास और उत्पादन परिवेश दोनों में बहुत मददगार है।

क्यों?

क्योंकि लॉगिंग का पूरा उद्देश्य यह जानकारी एकत्र करना है कि क्या हुआ, क्या गलत हुआ और क्या सही हुआ।

सभी प्रकार की जानकारी लॉग की जा सकती है :

  • धीमी SQL क्वेरी (ताकि आप उन्हें ढूंढ और ठीक कर सकें)
  • त्रुटि संदेश
  • विस्तृत अनुरोध जानकारी (यूआरएल, नियंत्रक, पैरामीटर, दृश्य…)

इस जानकारी के साथ, आप निदान कर सकते हैं और अपने आवेदन में समस्याओं के स्रोत का तेजी से पता लगा सकते हैं।

रेल ऐप में, लॉग /log . के अंतर्गत संग्रहीत किए जाते हैं फ़ोल्डर।

विकास मोड में, development.log फ़ाइल का उपयोग किया जाता है और आप उस टर्मिनल पर लॉग आउटपुट देखते हैं जिसे आप चला रहे हैं rails server चालू।

अब :

आइए जानें कि आप Logger . का उपयोग करके रूबी में लॉगिंग कैसे कर सकते हैं कक्षा!

द लॉगर क्लास

रूबी लकड़हारा वर्ग आपको एक डिफ़ॉल्ट आउटपुट स्वरूप और गंभीरता के विभिन्न स्तरों के साथ लॉग उत्पन्न करने का एक तरीका देता है।

यहां लॉग बनाने का तरीका बताया गया है :

logger = Logger.new("my_log.txt")

यह लॉगिंग संदेशों को my_log.txt . पर लिखेगा ।

यदि आप टर्मिनल पर संदेश प्रदर्शित करना चाहते हैं, जहां प्रोग्राम चल रहा है, तो आप STDOUT पर लॉग इन कर सकते हैं ।

इसे पसंद करें :

logger = Logger.new(STDOUT)

लॉगिंग संदेशों के विभिन्न स्तर हो सकते हैं, यह इस बात पर निर्भर करता है कि वे कितने महत्वपूर्ण हैं।

स्तर हैं :

  • डीबग
  • जानकारी
  • चेतावनी
  • त्रुटि
  • FATAL
  • अज्ञात

प्रत्येक स्तर की एक समान आवृत्ति विधि होती है।

तो अगर आप “जानकारी” लॉग करना चाहते हैं।

यह करें :

logger.info("I'm reading a RubyGuide about logging!")

वास्तविक लॉग प्रविष्टि इस तरह दिखती है :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : I'm reading a RubyGuide about logging!

इन विभिन्न स्तरों के होने से आपको अपनी लॉग फ़ाइल को फ़िल्टर करने में मदद मिलती है, ताकि आप जो खोज रहे हैं उसे तेज़ी से पा सकें!

यह आपको यह देखने में भी मदद करता है कि आप समय के साथ कितनी त्रुटियाँ और चेतावनी संदेश उत्पन्न करते हैं।

बढ़िया सामान!

अपने लॉग्स को कैसे फॉर्मेट करें

अपने रूबी लॉग के लिए डिफ़ॉल्ट आउटपुट स्वरूप का उपयोग करना बहुत अच्छा है क्योंकि इसके चारों ओर उपकरण बनाए जा सकते हैं और अधिक लोग समझ सकते हैं कि यह कैसे काम करता है।

यहां फिर से एक लॉग लाइन दी गई है :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : test

इसमें कुछ घटक हैं :

  • “I” गंभीरता के स्तर के पहले अक्षर का प्रतिनिधित्व करता है
  • कोष्ठक के अंदर, आप उस प्रक्रिया की टाइमस्टैम्प और प्रक्रिया आईडी (PID) पाते हैं जिसने इस लॉग संदेश को उत्पन्न किया
  • जानकारी गंभीरता स्तर का पूरा नाम है
  • कोलन के बाद, हमारे पास वास्तविक संदेश है जो लॉग किया गया था

लेकिन यह प्रारूप सभी के लिए आदर्श नहीं हो सकता है।

तो रूबी आपको इसे बदलने की अनुमति देती है!

यहां बताया गया है :

logger.formatter = proc { |severity, datetime, progname, msg| "#{severity}, #{datetime}, #{msg}\n" }

परिणामस्वरूप, आपको यह आउटपुट मिलता है :

DEBUG, 2019-08-08 19:39:01 +0200, testing

आप इसका उपयोग अतिरिक्त जानकारी जोड़ने के लिए कर सकते हैं जो आपके और आपकी टीम के लिए उपयोगी हो सकती है।

अपने लॉग साइज को कैसे सीमित करें

लॉग वास्तव में बड़ी फ़ाइलें बन सकते हैं जब तक कि आप उनके आकार पर नज़र नहीं रखते।

यदि लॉग के कारण आपका डिस्क स्थान समाप्त हो जाता है, तो आपके सिस्टम में हर तरह की अजीब चीजें होने लगती हैं।

एक समाधान है!

आप अपने लॉग के आकार को सीमित कर सकते हैं।

यहां बताया गया है :

MEGABYTE = 1024 ** 2
ONE_HUNDRED_MEGABYTES = MEGABYTE * 100

logger = Logger.new("my_log.txt", 1, ONE_HUNDRED_MEGABYTES)

पहला पैरामीटर वह है जहां लॉग संदेशों को सहेजना है।

दूसरा पैरामीटर यह है कि आप कितनी लॉग फ़ाइलें रखना चाहते हैं (लॉग रोटेशन), और अंतिम पैरामीटर अधिकतम फ़ाइल आकार है।

लॉग रीडिंग और फ़िल्टरिंग

ठीक है, आपको अपने लॉग मिल गए हैं।

आप उन्हें कैसे पढ़ते हैं और आपको जो चाहिए उसे ढूंढते हैं?

लॉग सादा-पाठ फ़ाइलें हैं, इसलिए आप अपनी पसंद के किसी भी पाठ-संसाधन उपकरण का उपयोग कर सकते हैं।

उदाहरण के लिए :

ग्रेप.

यह एक कमांड-लाइन टूल है जिसका उपयोग आप टेक्स्ट फ़ाइलों को फ़िल्टर करने के लिए कर सकते हैं।

यहां बताया गया है :

grep INFO my_log.txt

यह आपको हर पंक्ति देता है जिसे "INFO" के रूप में लॉग किया गया है।

आप कोई अन्य लेख . खोज सकते हैं grep . का उपयोग करके अपने लॉग के अंदर , बस "जानकारी" को आप जो खोज रहे हैं उससे बदलें।

एक अन्य यूनिक्स टूल जिसका आप उपयोग कर सकते हैं, उसे less कहा जाता है (-R विकल्प के साथ)।

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

आप भी उपयोग कर सकते हैं…

लॉग प्रबंधन और खोज के लिए विशिष्ट उपकरण।

प्रवचन के लॉगस्टर रत्न की तरह।

सारांश

आपने रूबी में लॉग इन करने के बारे में सीखा है, यह क्या है, यह कैसे काम करता है, और इसका उपयोग कैसे करें।

अब इसे आजमाने की आपकी बारी है।

पढ़ने के लिए धन्यवाद!


  1. रूबी उपनाम कीवर्ड का उपयोग कैसे करें

    आप रूबी पद्धति को दो तरह से वैकल्पिक नाम दे सकते हैं: उपनाम (कीवर्ड) उपनाम_विधि क्योंकि वे एक ही काम को थोड़े अलग तरीके से करते हैं, यह एक भ्रमित करने वाला विषय हो सकता है। यह छवि मतभेदों का सारांश है : आइए एक ठोस समझ पाने के लिए इन अंतरों को और अधिक विस्तार से देखें! उपनाम कीवर्ड सबसे पहले

  1. रूबी में स्ट्रक्चर और ओपनस्ट्रक्चर का उपयोग कैसे करें?

    रूबी में स्ट्रक्चर क्या है? एक संरचना एक अंतर्निहित रूबी वर्ग है, इसका उपयोग नए वर्ग बनाने के लिए किया जाता है जो मूल्य वस्तुओं का उत्पादन करते हैं। संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए एक मूल्य वस्तु का उपयोग किया जाता है। यहां एक उदाहरण दिया गया है : एक Point दो निर्देशांकों के साथ

  1. अपने रूबी कार्यक्रमों को कैसे डिबग और ठीक करें

    आपका प्रोग्राम कितनी बार ठीक वही करता है जो आप पहली बार चाहते हैं? कई बार हमारे प्रोग्राम हमारी अपेक्षा के अनुरूप काम नहीं करते हैं, इसलिए हमें रूबी को डीबग करना की कला का उपयोग करना पड़ता है। क्यों पता लगाने में हमारी मदद करने के लिए। आप निम्न त्रुटि संदेश से परिचित हो सकते हैं: undefined method