Elm:
লগিং

কিভাবে:

Elm এর আর্কিটেকচার সরাসরি লগিংযের মত সাইড ইফেক্টস সাপোর্ট করে না—আপনি তাদের কমান্ডসের মাধ্যমে সামলান, যা আপনার অ্যাপ্লিকেশনের আর্কিটেকচারের একটি অংশ। শিক্ষামূলক উদ্দেশ্যে, চলুন দেখা যাক কিভাবে আপনি পোর্টের মাধ্যমে জাভাস্ক্রিপ্টে বার্তা পাঠিয়ে লগিং সিমুলেট করতে পারেন।

প্রথমে, আপনি একটি পোর্ট মডিউল সংজ্ঞায়িত করবেন:

port module Logger exposing (..)

-- জাভাস্ক্রিপ্টে লগ প্রেরণের জন্য একটি পোর্ট নির্ধারণ করুন
port log : String -> Cmd msg

আপনার Main.elm এ, আপনি একটি লগ বার্তা প্রেরণের জন্য log পোর্ট ব্যবহার করবেন:

import Logger exposing (log)

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        AnEvent ->
            -- আপনার মডেলে এখানে কিছু আপডেট
            ( updatedModel, log "AnEvent occurred." )

        AnotherEvent ->
            -- এখানে অন্যান্য মডেল আপডেটস
            ( anotherUpdatedModel, log "AnotherEvent occurred." )

জাভাস্ক্রিপ্ট দিকে, আপনি আসন্ন লগ বার্তা হ্যান্ডেল করার জন্য log পোর্টে সাবস্ক্রাইব করতে পারেন:

var app = Elm.Main.init({ /* ... */ });

app.ports.log.subscribe(function(message) {
    console.log(message);
});

জাভাস্ক্রিপ্ট কনসোলে নমুনা আউটপুট হবে:

AnEvent occurred.
AnotherEvent occurred.

গভীর ডুব

প্রথাগতভাবে, পাইথন বা জাভা এর মতো ভাষাগুলিতে, লগিং একটি লগিং লাইব্রেরি ব্যবহার করে করা হয়, যা বিভিন্ন লেভেলে যেমন ডিবাগ, ইনফো, ওয়ার্নিং, এরর, এবং ক্রিটিকাল বার্তা লগ করার জন্য সরাসরি API প্রদান করে।

Elm, এর শুদ্ধতা এবং অপরিবর্তনীয়তার উপর মনোনিবেশ সহ, এই ধরনের সরাসরি লগিং প্রদান করে না, যেহেতু যেকোনো ধরনের IO বা সাইড ইফেক্ট Elm আর্কিটেকচারের মাধ্যমে আলাদাভাবে ম্যানেজ করা হয়।

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

পোর্টের পাশাপাশি, প্রোগ্রামাররা প্রায়ই Elmের কম্পাইলার বার্তা এবং রানটাইম ডিবাগিং সুবিধাগুলি, যেমন Debug.log, তাদের কোডে মান ট্রেস করার জন্য ব্যবহার করেন। এটি একটি এক্সপ্রেশনকে র্যাপ করে এবং এর আউটপুটকে কনসোলে লগ করে এমনভাবে:

view model =
    Debug.log "Model Debug" model
    -- আপনার ভিউ কোড এখানে

তবে এটিও প্রোডাকশনের জন্য নয়। elm-logger মতো টুলগুলি পোর্টের উপর কিছু অ্যাবস্ট্রাকশন প্রদান করে লগিংয়ের জন্য, যদিও এগুলি প্রোডাকশনের চেয়ে ডেভেলপমেন্টের জন্য বেশি।

আরও দেখুন