কাস্টম লগার
আপনার নিজস্ব লগার তৈরি
ক্ষেত্রে যখন ত্রুটিগুলি সন্ধানের জন্য উপরে তালিকাভুক্ত সরঞ্জামগুলি যথেষ্ট নয়, আপনি সর্বদা আপনার নিজের লগার তৈরি করতে পারেন এবং এতে আপনার সমস্ত প্রয়োজনীয়তা বাস্তবায়ন করতে পারেন। উদাহরণ স্বরূপ, আসুন একটি লগার তৈরি করি যা এই ইভেন্টটি ট্রিগারকারী ব্যবহারকারী সম্পর্কে তথ্য এবং ইভেন্টের সাধারণ বিবরণ ছাড়াও এর অ্যাক্সেস লেভেল যোগ করবে।
লগার ডেটা মডেল
এটি করার জন্য, ডাটাবেসে একটি মডেল তৈরি করে শুরু করা যাক। তিনটি প্রয়োজনীয় ক্ষেত্র সহ আমাদের একটি খুব সাধারণ মডেল দরকার।
- info (text) - ইভেন্ট সম্পর্কে সাধারণ তথ্য
- user (integer) - ব্যবহারকারী আইডি
- access (array string) - ব্যবহারকারী গোষ্ঠী (অনেকগুলি থাকতে পারে)
লগার ব্যবসা প্রক্রিয়া
এর পরে, আমরা ডাটাবেসে একটি লগ লেখার জন্য একটি ব্যবসায়িক প্রক্রিয়া তৈরি করব। এর কাজ হবে যেকোন ইভেন্ট সম্পর্কে তথ্য গ্রহণ করা, ব্যবহারকারী সম্পর্কে তথ্যের সাথে এটি সম্পূরক করা এবং ডাটাবেসে চূড়ান্ত ফলাফল সংরক্ষণ করা।
ব্যবহারকারী সম্পর্কে তথ্য পেতে, প্রমাণ ব্যবহার করুন Auth: Get current user । মনে রাখবেন যে এটি শুধুমাত্র একটি ব্যবহারকারী মডেল হিসাবে ফলাফল উপস্থাপন করতে সক্ষম হবে যদি Middleware Token Auth শেষ পয়েন্টে সক্রিয় করা থাকে যা এটি কার্যকর করা শুরু করে।
ফলাফল প্রসারিত করতে এবং প্রয়োজনীয় ক্ষেত্রগুলি পেতে আমরা Expand User ব্যবহার করি। আমাদের ক্ষেত্রে, এগুলি হল ID , Login এবং Groups । প্রথম দুটি ব্যবহার করা খুবই সাধারণ, আপনাকে শুধু Login মেইল ফরম্যাট থেকে একটি স্ট্যান্ডার্ড String ( To String ব্লকে) রূপান্তর করতে হবে।
ব্যবহারকারী গ্রুপের ক্ষেত্রে পরিস্থিতি কিছুটা জটিল। তারা Enum বিন্যাসে সংরক্ষণ করা হয়. এটি একটি গণনাকৃত প্রকার যা ডাটাবেসে শুধুমাত্র শনাক্তকারীর একটি তালিকা সংরক্ষণ করে, তাদের পাঠ্য মান নয়। আমাদের ক্ষেত্রে, মান 1 অ্যাডমিনিস্ট্রেটরদের গ্রুপের ( Admins ) সাথে এবং মান 2 ব্যবহারকারীদের ( Users ) গ্রুপের সাথে মিলে যায়।
আমাদের কাজ হল এই শনাক্তকারীকে ডিক্রিপ্ট করা এবং ফলাফলটি সুবিধাজনক পাঠ্য ডেটা আকারে লেখা। এই জন্য, আপনার প্রয়োজন:
- একটি ভেরিয়েবল ঘোষণা করুন যাতে ব্যবহারকারী গোষ্ঠী সম্পর্কে পাঠ্য তথ্য লেখা হবে। আসুন String Array ব্যবহার করি এবং Set Variable করি।
- For each loop লুপটি শুরু করুন। এটি ব্যবহারকারীর গোষ্ঠীগুলির একটি অ্যারে পাবে এবং তারপরে, প্রতিটি পুনরাবৃত্তিতে, পরবর্তী গ্রুপটিকে তার পাঠ্য মানতে রূপান্তর করবে এবং অ্যারেতে যুক্ত করবে।
- Switch ব্লক ব্যবহার করে, ব্যবহারকারী গোষ্ঠীটি পরীক্ষা করুন এবং ফলাফলের উপর নির্ভর করে, প্রক্রিয়াটিকে আরও নির্দেশ করুন।
- String এবং Set Variable ব্লক ব্যবহার করে, ব্যবহারকারীর গ্রুপের প্রয়োজনীয় মান একটি ভেরিয়েবলে সংরক্ষণ করুন।
- Append Array ব্যবহার করুন এবং একটি অ্যারেতে ফলাফল যোগ করতে এবং লুপ শুরুর আগে ঘোষিত একটি ভেরিয়েবলে সংরক্ষণ করতে Set Variable করুন।
লুপটি সম্পূর্ণ করার পরে, বিক্ষিপ্ত ডেটা থেকে একটি চূড়ান্ত স্ট্রিং তৈরি করতে আপনার Concat Strings (Multiple) ব্লক ব্যবহার করা উচিত, যা Text রূপান্তরিত হবে এবং লগে লেখা হবে।
log মডেল জেনারেট করা এবং ডাটাবেসে লিখতে শেষ জিনিস।
ফলস্বরূপ বিপি এইরকম হওয়া উচিত:
লগার এন্ডপয়েন্ট
ব্যবসা প্রক্রিয়া প্রস্তুত. এখন আমাদের এটির জন্য একটি শেষ পয়েন্ট তৈরি করতে হবে। এটি করার জন্য, আমরা POST /log/ endpoint-এর সিস্টেম ব্যবসায়িক প্রক্রিয়াটিকে এইমাত্র তৈরি করা ব্যবসায়িক প্রক্রিয়ার সাথে প্রতিস্থাপন করব।
এখন আমাদের নিজস্ব লগ যেতে সম্পূর্ণরূপে প্রস্তুত. আপনি মডিউলের একেবারে শুরুতে, Basic functions ব্যবসায়িক প্রক্রিয়াতে ফিরে যেতে পারেন এবং আপনার নিজের তৈরি করা স্ট্যান্ডার্ড লগটি প্রতিস্থাপন করতে পারেন।
এখন, প্রতিবার গণনা শুরু হলে, একটি বিশেষ লগ শুধুমাত্র এই ইভেন্টের সত্যতা সম্পর্কে তথ্যই রেকর্ড করবে না কিন্তু কোন ব্যবহারকারী এটি করেছে সে সম্পর্কেও। আমরা Swagger এ ফলাফল পরীক্ষা করতে পারি।
মহান, আমাদের লগ সত্যিই কাজ করে. এখন এতে ইভেন্ট, ব্যবহারকারীর লগইন এবং তার অ্যাক্সেসের অধিকার সম্পর্কে তথ্য রয়েছে।
সম্ভাব্য ত্রুটি এবং প্রস্তাবিত কর্ম
ফলস্বরূপ, আমরা ত্রুটিগুলির সম্ভাব্য রূপগুলি গঠন করি এবং সেগুলি সংশোধন করার জন্য ক্রিয়া করি৷
- ব্যবসা প্রক্রিয়া নিজেই ত্রুটি. ধাপে ধাপে যাচাইয়ের জন্য লগ ব্যবহার করার পরামর্শ দেওয়া হয়। সুতরাং, আপনি ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই ব্যবসায়িক প্রক্রিয়ার একটি নির্দিষ্ট ব্লক এবং ব্লক ব্যবহার করে এমন সমস্ত প্যারামিটার চালু করার সত্যতা পরীক্ষা করতে পারেন।
- সার্ভারে অনুরোধ পাঠানোর ক্ষেত্রে ত্রুটি৷ এটি করতে, ব্রাউজারে Developer Tools ব্যবহার করুন। আপনি যে অনুরোধটি পাঠানো হয়েছে তা পরীক্ষা করতে পারেন, এর গঠন বিশ্লেষণ করতে পারেন এবং প্রাপ্ত প্রতিক্রিয়া দেখতে পারেন।
- অনুরোধগুলি বিকৃত। পুঙ্খানুপুঙ্খ পরীক্ষা, বিভিন্ন ক্যোয়ারী অপশন এবং পরামিতি সমন্বয় পরীক্ষা করার জন্য Swagger ব্যবহার করার পরামর্শ দেওয়া হয়।
- অনুরোধের ফলাফল সঠিকভাবে পার্স করা হয় না. এটি ঘটে যে আমরা ফলাফলের জন্য অপেক্ষা করছি যেখানে এটি হওয়া উচিত নয়। উদাহরণস্বরূপ, আমরা ডাটাবেসে ডেটা যোগ করি কিন্তু এই ডেটা প্রদর্শন করে এমন টেবিলে সেগুলি আপডেট করি না। মনে রাখবেন যে প্রতিটি উপাদানের জন্য একটি সংশ্লিষ্ট ব্যবসায়িক প্রক্রিয়া প্রয়োজন, এবং নিশ্চিত করুন যে এই প্রক্রিয়াটি সঠিকভাবে কনফিগার করা হয়েছে।