लॉग लेवल

लॉग लेवल

सीखने का अभ्यास

परिचय

स्ट्रिंग

Common Lisp में स्ट्रिंग अक्षरों के वेक्टर होती हैं। स्ट्रिंग को डबल कोट्स के बीच रखे अक्षरों के रूप में लिखा जाता है (जैसे "Hello World!")।

stringp प्रेडिकेट तभी सही लौटाता है, जब दी गई वैल्यू एक स्ट्रिंग हो।

subseq फंक्शन की मदद से स्ट्रिंग को छोटे हिस्सों में बाँटा जा सकता है। यह फंक्शन स्ट्रिंग, शुरुआत का इंडेक्स और चाहें तो अंत का इंडेक्स लेता है। इंडेक्स 0 से शुरू होता है।

(subseq "Hello World" 1 5)   ; => "ello"
(subseq "skip to the end" 5) ; => "to the end"

स्ट्रिंग की बराबरी string= से जाँची जा सकती है। अगर अक्षरों के केस को अनदेखा करना हो, तो string-equal इस्तेमाल किया जा सकता है।

(string= "macaroni" "macaroni")      ; => T
(string= "macaroni" "MACARONI")      ; => NIL
(string-equal "macaroni" "MACARONI") ; => T

स्ट्रिंग को बड़े अक्षरों में बदलने, छोटे अक्षरों में बदलने और कैपिटलाइज़ करने जैसे काम string-upcase, string-downcase और string-capitalize से किए जा सकते हैं।

(string-upcase "not too loud")                ; => "NOT TOO LOUD"
(string-downcase "YELL IT FROM THE ROOFTOPS") ; => "yell it from the rooftops"
(string-capitalize "practical COMMON LiSP")   ; => "Practical Common Lisp"

निर्देश

इस अभ्यास में आप कुछ कोड लिखेंगे जो Larry the Lisp Alien को लॉग स्ट्रिंग पार्स करने और फॉर्मैट करने में मदद करेगा। ये लॉग स्ट्रिंग अलग-अलग सिस्टम से आती हैं, और इन्हें इस तरह संसाधित करना होता है कि इनके संदेश किसी जानकारीपूर्ण मॉनिटरिंग डिस्प्ले पर दिखाए जा सकें।

लॉग स्ट्रिंग इस रूप में होती हैं: "[<level>]: <message>". लेवल इनमें से कोई एक वैल्यू होता है: info, warn, या ohno.

1. संदेश निकालिए

एक फंक्शन log-message बनाइए जो एक लॉग स्ट्रिंग लेता है और उसमें मौजूद संदेश लौटाता है।

(log-message "[ohno]: whoops!") ; => "whoops!"

2. गंभीरता तय कीजिए

लॉग स्ट्रिंग का लेवल उसकी गंभीरता तय करता है।

  • info लेवल का मतलब है :everything-ok गंभीरता
  • warn लेवल का मतलब है :getting-worried गंभीरता
  • ohno लेवल का मतलब है :run-for-cover गंभीरता

एक फंक्शन log-severity बनाइए जो एक लॉग स्ट्रिंग लेता है और सही गंभीरता लौटाता है।

(log-severity "[warn]: might want to get that checked") ; => :getting-worried

3. वास्तविकता की अनिश्चितताओं से निपटना

दुर्भाग्य से कभी-कभी लॉग स्ट्रिंग हमेशा सही तरीके से फॉर्मैट नहीं होतीं। खास तौर पर, लॉग लेवल ऊपर बताए अनुसार पूरी तरह छोटे अक्षरों में नहीं भी हो सकता। इसे संभालने के लिए log-severity में बदलाव कीजिए।

(log-severity "[WaRn]: string case system failing") ; => :getting-worried

4. लॉग की गंभीरता के अनुसार संदेश को फिर से फॉर्मैट करना

गंभीरता के अनुसार संदेश को अलग-अलग तरीकों से बदलना चाहिए:

  • :everything-ok गंभीरता में संदेश को पूरी तरह छोटे अक्षरों में बदलना चाहिए।
  • :getting-worried गंभीरता में संदेश के हर शब्द का पहला अक्षर बड़ा करना चाहिए।
  • :run-for-cover गंभीरता में संदेश को पूरी तरह बड़े अक्षरों में बदलना चाहिए।

एक फंक्शन log-format बनाइए जो एक लॉग संदेश लेता है और उसे सही तरीके से फॉर्मैट करके लौटाता है।

(log-format "[ohno]: whoops!") ; => WHOOPS!
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Common Lisp Exercism

लॉग लेवल शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Common Lisp को 27 कॉन्सेप्ट92 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।