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

Ruby लॉगिंग मास्टर करें: इवेंट्स और एरर्स को प्रभावी ढंग से ट्रैक करें

Logger क्लास

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

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

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

यह लॉगिंग मैसेजेस को my_log.txt में लिखेगा।

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

इस तरह:

 logger = Logger.new(STDOUT) 

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

स्तर हैं:

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • UNKNOWN

हर स्तर में एक संबंधित इंस्टेंस मेथड होता है।

तो अगर आप "info" लॉग करना चाहते हैं।

यह करें:

 logger.info("मैं RubyGuide के बारे में लॉगिंग पढ़ रहा हूँ!") 

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

 # I, [2019-08-08T19:22:00.152079 #642] INFO -- : मैं RubyGuide के बारे में लॉगिंग पढ़ रहा हूँ! 

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

यह आपको यह देखने में भी मदद करता है कि आप समय के साथ कितने एरर और चेतावनी मैसेजेस जनरेट करते हैं।

बहुत बढ़िया!

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

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

यहाँ फिर से एक लॉग लाइन है:

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

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

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

लेकिन यह फॉर्मेट हर किसी के लिए आदर्श नहीं हो सकता।

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

यहाँ कैसे:

 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।

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

यहाँ कैसे:

 grep INFO my_log.txt 

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

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

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

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

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

लॉग मैनेजमेंट और खोज के लिए विशिष्ट टूल्स।

जैसे Discourse का logster gem।

सारांश

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

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

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


  1. Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना

    Ruby में किसी मेथड को वैकल्पिक नाम देने के दो तरीके हैं: alias (कीवर्ड) alias_method चूंकि ये दोनों थोड़े अलग तरीके से एक ही काम करते हैं, इसलिए यह विषय भ्रमित करने वाला हो सकता है। यह छवि अंतरों का सारांश है: आइए इन अंतरों को विस्तार से समझते हैं ताकि आपको ठोस समझ मिल सके! alias कीवर्ड पहला है a

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।

  1. रूबी डीबगिंग में महारत: सामान्य त्रुटियों के लिए त्वरित सुधार रूबी डीबगिंग में महारत: सामान्य त्रुटियों के लिए त्वरित सुधार

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