Elixir:
লগিং
কীভাবে:
এলিক্সিরে, তথ্য লগ করার প্রাথমিক উপায় হল বিল্ট-ইন Logger
মডিউলের মাধ্যমে। এখানে আপনি কিভাবে এটি ব্যবহার করবেন তা দেখানো হলো:
defmodule MyApplication do
require Logger
def do_something_important(param) do
Logger.info("গুরুত্বপূর্ণ প্রক্রিয়া শুরু হচ্ছে প্যারামিটার সহ: #{param}")
# কাজ করা সিমুলেট করা হচ্ছে
:timer.sleep(1000)
Logger.debug("প্রক্রিয়া সম্পন্ন হয়েছে।")
rescue
error -> Logger.error("একটি ত্রুটি ঘটেছে: #{inspect(error)}")
end
end
# আপনার লগ দেখার জন্য, আপনাকে শুধু এই ফাংশনটি কল করতে হবে:
MyApplication.do_something_important("MyParam")
এই সাধারণ স্নিপেটটি দেখায় কিভাবে বিভিন্ন লেভেলে (info
, debug
, এবং error
) লগ করতে হয়। আপনি যখন এটি চালাবেন, আপনি ডিবাগ বার্তা দেখতে পাবেন না যতক্ষণ না Logger লেভেলটি :debug
এ কনফিগার করা হয়। ডিফল্ট হিসেবে, এলিক্সিরের Logger :info
এর নিচের লগ বার্তাগুলি ছেঁকে দেয়।
:info
লেভেলে নমুনা আউটপুট এরকম দেখাবে:
14:32:40.123 [info] গুরুত্বপূর্ণ প্রক্রিয়া শুরু হচ্ছে প্যারামিটার সহ: MyParam
14:32:41.126 [error] একটি ত্রুটি ঘটেছে: %RuntimeError{message: "রানটাইম ত্রুটি"}
গভীরে ডুব:
এলিক্সিরের Logger
হল একটি বিল্ট-ইন টুল যা ভাষার প্রাথমিক দিন থেকেই অংশ হিসেবে ছিল। এটি অন্য BEAM ভাষাগুলির যেমন এরল্যাংয়ের, লগিং সিস্টেমের দ্বারা প্রভাবিত। লগারটি বিভিন্ন স্তরের লগিং – :debug
, :info
, :warn
, এবং :error
– প্রদান করে এবং এটি প্লাগযোগ্য, অর্থাৎ বিভিন্ন ব্যাকএন্ডগুলি লগ বার্তাগুলি সম্পাদনার জন্য যুক্ত করা যায়।
বিল্ট-ইন Logger এর বিকল্প হিসেবে আরও জটিল সিনারিওগুলির জন্য Logstash
বা Sentry
জাতীয় লগিং লাইব্রেরিগুলি এলিক্সিরের জন্য ব্যবহৃত হতে পারে, যা ত্রুটি ট্র্যাকিং এবং একটি আরও দৃশ্যমান ফরম্যাটে এগ্রিগেশনের মতো অতিরিক্ত বৈশিষ্ট্য প্রদান করতে পারে। স্থানীয় ডেভেলপমেন্টের জন্য, এলিক্সির ডেভেলপাররা প্রায়শই এর সিম্প্লিসিটি এবং BEAM VM এর সাথে ইন্টিগ্রেশনের জন্য বিল্ট-ইন Logger ফাংশনালিটির উপর নির্ভর করে।
Logger মডিউলের আড়ালে, এমন একটি অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস লগিং অফার করে। ডিফল্ট হিসেবে অ্যাসিঙ্ক্রোনাস লগিং, যা আপনার অ্যাপ্লিকেশনের নির্বাহকে ব্লক করে না বার্তাগুলি লগ করার সময়। এর মাধ্যমে নিশ্চিত করা হয় যে, লগিং পারফরম্যান্সে নেগেটিভ প্রভাব ফেলে না। তবে, যেখানে আপনি নিশ্চিত করতে চান যে বার্তাগুলি পাঠানোর ক্রমে লগ করা হচ্ছে, সেখানে সিঙ্ক্রোনাস লগিং সক্ষম করা যেতে পারে।
লগার কনফিগারেশনটি একটি এলিক্সির অ্যাপ্লিকেশনের config/config.exs
ফাইলে সামঞ্জস্য করা যেতে পারে, যেখানে আপনি লগিং লেভেল, ফর্ম্যাট, মেটাডাটা ইত্যাদি সেট করতে পারেন। সবসময় মনে রাখবেন বিভিন্ন পরিবেশের জন্য আপনার লগিং লেভেল এবং আউটপুটগুলি সামঞ্জস্য করতে; আপনি আপনার প্রোডাকশন সিস্টেমগুলিতে বিস্তৃত ডিবাগ লগগুলি দেখতে চাইবেন না।
দেখুন এছাড়াও:
- অফিশিয়াল এলিক্সির লগার ডকুমেন্টেশন: https://hexdocs.pm/logger/Logger.html
- এলিক্সির লগিংয়ের সেরা অনুশীলনের উপর একটি ব্লগ পোস্ট: https://blog.appsignal.com/2020/05/06/elixir-logging-tips-and-tricks.html
- হেক্সে এলিক্সিরের জন্য সেন্ট্রি: https://hex.pm/packages/sentry
- লগার সম্পর্কিত এলিক্সির স্কুলের পাঠ: https://elixirschool.com/en/lessons/specifics/debugging/#logging