Haskell:
लॉगिंग

कैसे करें:

हास्केल में, लॉगिंग monad-logger या hslogger जैसे पुस्तकालयों का उपयोग करके लागू किया जा सकता है। यहाँ monad-logger का उपयोग करते हुए एक त्वरित उदाहरण दिया गया है:

{-# LANGUAGE OverloadedStrings #-}

import Control.Monad.Logger
import Control.Monad.IO.Class (liftIO)

logExample :: LoggingT IO ()
logExample = do
    logInfoN "एप्लीकेशन शुरू करते हुए..."
    liftIO $ putStrLn "कुछ महत्वपूर्ण काम कर रहे हैं..."
    logErrorN "उह! कुछ गलत हो गया।"

main :: IO ()
main = runStdoutLoggingT logExample

{- सैंपल आउटपुट
[Info] एप्लीकेशन शुरू करते हुए...
कुछ महत्वपूर्ण काम कर रहे हैं...
[Error] उह! कुछ गलत हो गया।
-}

यह सरल उदाहरण बताता है कि कैसे आप समझने के लिए कि रनटाइम पर क्या हो रहा है, आपके कोड में लॉगिंग स्टेटमेंट्स को बिखेर सकते हैं। logInfoN और logErrorN का उपयोग क्रमशः सूचनात्मक और त्रुटि संदेशों को लॉग करने के लिए किया जाता है।

गहराई में:

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

हास्केल में, लॉगिंग को शुद्ध कार्यात्मक शैली में जो स्पष्ट रूप से लॉग क्रियाओं को प्रसारित करती है, या अशुद्धता के लिए मोनादिक संदर्भों का उपयोग करके किया जा सकता है, जहाँ लॉगर्स गणना के माध्यम से अंतर्निहित रूप से थ्रेडेड होते हैं।

उदाहरण के लिए, hslogger लाइब्रेरी monad-logger की तुलना में अधिक पारंपरिक और परिवर्तनशील है। monad-logger मोनाद स्टैक के साथ इंटीग्रेशन प्रदान करता है और आउटपुट फॉर्मेटिंग और नियंत्रण के मामले में अधिक लचीलापन प्रदान करता है। दोनों लाइब्रेरीज आपको लॉग स्तर सेट करने की अनुमति देती हैं, जो उनके महत्व के आधार पर लॉग संदेशों को छानने में मदद करती हैं। लॉग स्तर में डीबग, इन्फो, नोटिस, वार्निंग, एरर, क्रिटिकल, अलर्ट, और इमर्जेंसी शामिल हैं।

हास्केल की लॉगिंग की दृष्टिकोण अक्सर उसके टाइप सेफ्टी और शुद्धिकरण पर जोर के साथ तालमेल रखती है। लॉग्स को इस तरह से संभाला जा सकता है कि यदि लॉगिंग विफल हो जाती है, तो यह हास्केल के मजबूत त्रुटि संभालने की क्षमताओं के कारण मुख्य एप्लीकेशन को क्रैश करने का कारण नहीं बनेगा।

देखें भी: