Haskell:
লগিং

কিভাবে:

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

{- নমুনা আউটপুট
[ইনফো] অ্যাপ্লিকেশন শুরু হচ্ছে...
কিছু জরুরি কাজ করা হচ্ছে...
[এরর] ওপস! কিছু ভুল হয়ে গেছে।
-}

এই সহজ উদাহরণটি দেখায় যে, আপনার কোডের মাধ্যমে লগিং স্টেটমেন্টগুলি কিভাবে ছিটিয়ে দিলে রানটাইমে কি ঘটছে তার উপর দৃষ্টি দেওয়া যায়। logInfoN এবং logErrorN তথ্যমূলক এবং ত্রুটি বার্তা লগ করার জন্য ব্যবহৃত হয়।

গভীর ডাইভ:

লগিং সাধারণ প্রিন্ট বিবৃতি থেকে জটিল লগিং ফ্রেমওয়ার্কের দিকে এগিয়ে গেছে। ঐতিহাসিকভাবে, লগগুলি কনসোল বা ফাইলে কেবল টেক্সট আউটপুট ছিল, কিন্তু এখন এগুলি বিভিন্ন টুল দ্বারা পার্স এবং বিশ্লেষণ করা যায় এমন স্ট্রাকচারড ডেটা অন্তর্ভুক্তি করে।

Haskell এ, লগিং পুরোপুরি ফাংশনাল স্টাইলে করা যেতে পারে যেখানে লগ অ্যাকশনগুলি স্পষ্টভাবে পাস করা হয় অথবা অপবিত্রতা জন্য মনাডিক প্রসঙ্গ ব্যবহার করে, যেখানে লগারগুলি গণনার মধ্য দিয়ে পরোক্ষভাবে থ্রেডে হয়।

উদাহরণ স্বরূপ, hslogger লাইব্রেরিটি monad-logger এর তুলনায় আরও প্রথাগত এবং পরিবর্তনশীল। monad-logger মনাড স্ট্যাকের সাথে ইন্টিগ্রেশন অফার করে এবং আউটপুট ফর্ম্যাটিং ও নিয়ন্ত্রণের দিক থেকে আরও বেশি নমনীয়তা প্রদান করে। উভয় লাইব্রেরীই আপনাকে লগ স্তরগুলি সেট করতে দেয়, যা তাদের গুরুত্বের ভিত্তিতে লগ বার্তাগুলি ফিল্টার করতে সাহায্য করে। লগ স্তরগুলি অন্তর্ভুক্ত করে ডিবাগ, ইনফো, নোটিস, ওয়ার্নিং, এরর, ক্রিটিক্যাল, অ্যালার্ট, এবং ইমার্জেন্সি।

Haskell এর লগিং পদ্ধতি প্রায়শই এর টাইপ নিরাপত্তা এবং পবিত্রতার উপর জোর দেওয়ার সাথে মিলে যায়। লগগুলি এমনভাবে পরিচালনা করা যেতে পারে যে, এমনকি যদি লগিং ব্যর্�