পাইহটন লগে স্ট্যাকট্রেস মুদ্রণ করুন

Pa Ihatana Lage Styakatresa Mudrana Karuna



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

উদাহরণ 1: ট্রেসব্যাক মডিউল ব্যবহার করে পাইথনে স্ট্যাকট্রেস মুদ্রণ করুন

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

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







ট্রেসব্যাক পাইথন লাইব্রেরি আমদানির মাধ্যমে কোডটি প্রয়োগ করে শুরু করা যাক। তারপর, নিম্নলিখিত লাইনে, আমরা একটি অ্যারে তৈরি করি এবং কিছু মান সহ উপাদানগুলির তালিকা করি। অ্যারে তালিকার মান হল “7”, “8”, “9”, এবং “10”। অ্যারে তালিকায় চারটি মান রয়েছে। এই অ্যারে তালিকাটি পূর্বে শুরু করা ভেরিয়েবল 'A' এ সংরক্ষণ করা হয়েছিল।



এর পরে, আমরা নিম্নলিখিত লাইনে 'ট্রাই' শব্দটি এবং মান 'A=6' ব্যবহার করি। আমরা ব্যতিক্রমগুলি পরিচালনা করতে পাইথনে ব্লক-ব্যতীত চেষ্টা করি। এই পদ্ধতিটি স্ক্রিপ্ট লেখার জন্য ব্যবহার করা হয় যা ব্লক হেডারে একটি ত্রুটি বাড়াতে পারে। ব্যতিক্রমগুলি মূলত ত্রুটি, সিনট্যাক্স ত্রুটির মতো। একটি প্রোগ্রামের ব্যতিক্রমের সময়, ব্যতিক্রম হ্যান্ডলিং হল ব্যতিক্রমকে সাড়া দেওয়ার অনন্য কাজ। স্ক্রিপ্টে ফিরে, আমরা পরবর্তী লাইনে 'ব্যতীত' ব্যবহার করি।



ব্লক ছাড়া, আমরা 'traceback.print exc()' ব্যবহার করি যা 'ছাপানোর ব্যতিক্রম' এর জন্য সংক্ষিপ্ত। আমরা ব্যতিক্রম বাক্সের ভিতরে 'প্রিন্ট()' ফাংশনটি ব্যবহার করি যা 'প্রোগ্রাম এন্ড' যাতে এই বিবৃতিটি প্রিন্ট হয় যখন ব্যতিক্রম দেখা দেয়। এখন, ট্রাই বক্সে যদি কোনো ব্যতিক্রম ঘটে, প্রোগ্রামটি অবিলম্বে ব্লক বাদ দিয়ে চলে যায় এবং চলতে থাকে। যদি একটি ব্যতিক্রম ঘটে না, ব্যতিক্রম ব্লক সম্পূর্ণরূপে বাদ দেওয়া হয়। এখন ব্যতিক্রম ঘটলে, আমরা কোডে দেখতে পাচ্ছি যে '6' মানটি চেষ্টা বাক্সে প্রবেশ করানো হয়েছে যদিও এটি অ্যারে তালিকায় নেই। ফলস্বরূপ, কোডটি অবিলম্বে ব্যতিক্রম বাক্সে যায় এবং আউটপুট প্রদর্শনে 'প্রোগ্রাম শেষ' বিবৃতিটি প্রিন্ট করে।





ট্রেসব্যাক তৈরি করে এমন বিভিন্ন ফাংশন কলগুলি সবচেয়ে সাম্প্রতিক থেকে সর্বনিম্ন সাম্প্রতিক, নীচে থেকে উপরে পর্যন্ত অর্ডার করা হয়। এই অপারেশন সব দুই লাইন বিবৃতি দ্বারা প্রতিনিধিত্ব করা হয়. প্রতিটি কল ফাইলের নাম, সিকোয়েন্স নম্বর এবং মডিউলের নাম দিয়ে শুরু হয়, যার সবকটিই কোডের অবস্থান নির্দেশ করে। এর পরে, এটি ব্যতিক্রম প্রিন্ট স্টেটমেন্ট 'প্রোগ্রাম এন্ড' প্রদর্শন করে কারণ '6' মানটি ঘোষিত তালিকায় ছিল না, যার ফলে 'তালিকা সূচক পরিসীমার বাইরে' আউটপুট হয়।



উদাহরণ 2: Logging.Exception() পদ্ধতি ব্যবহার করে পাইথনে স্ট্যাকট্রেস প্রিন্ট করুন

এই উদাহরণে, স্ট্যাকট্রেস আউটপুট করতে পাইথনের 'logging.exception()' পদ্ধতিটি কীভাবে ব্যবহার করতে হয় তা আমরা প্রদর্শন করব। পাইথনে লগিং প্যাকেজ আমাদের ত্রুটিগুলি লগ করার পাশাপাশি ত্রুটি এবং ব্যতিক্রমগুলি রেকর্ড করতে দেয়। লগিং মডিউলগুলি আমাদের 'ডিবাগ', 'তথ্য', 'সতর্কতা', 'ত্রুটি', এবং 'সমালোচনামূলক' সহ লগিং মডিউলগুলির একটি নির্বাচন দেয়। সহজভাবে বলতে গেলে এগুলি মূলত লগিং মডিউলের স্তর। পাইথনে একটি ত্রুটি সহ একটি ব্যতিক্রম লগ করতে, 'logging.exception()' ফাংশনটি ব্যবহার করুন। এই ফাংশনটি এই লগারে ERROR স্থিতি সহ একটি প্রতিবেদন যোগ করে। এটা বিশ্বাস করা হয় যে প্যারামিটারগুলি ডিবাগিংয়ের জন্য। ব্যতিক্রম সম্পর্কে তথ্য লগিং রিপোর্ট সংযুক্ত করা হয়. একমাত্র অবস্থান যেখানে থেকে এই পদ্ধতিটি চালু করতে হবে ব্যতিক্রম হ্যান্ডলার হওয়া উচিত।

এখন, কোডটি দেখি। প্রথমত, আমরা দুটি লাইব্রেরি আমদানি করি – যার প্রথমটি হল লগিং এবং দ্বিতীয়টি হল ট্রেসব্যাক৷ তারপর, আমরা 'লগিং' সহ 'basicConfig' পদ্ধতি ব্যবহার করি এবং স্তরটিকে 'logging.Debug' হিসাবে নির্দিষ্ট করি। 'getLogger()' পদ্ধতিটি যে একমাত্র যুক্তিটি নেয় তা হল 'নাম'। সুতরাং, 'logging.getlogger' ফাংশন ব্যবহার করার সময় আমরা এটি ব্যবহার করি। যদি একটি নাম দেওয়া হয়, সেই নামের সাথে একটি লগার ইনস্ট্যান্সের একটি রেফারেন্স তৈরি করা হয়; অন্যথায়, রুট ফিরে আসে। একই লগার অবজেক্ট একই পরিচয় সহ অনেক getLogger() অপারেশন দ্বারা উল্লেখ করা হয়।

তারপর, আমরা চেষ্টা করার জন্য ব্যবহার করি, এবং আমরা চেষ্টা ব্লকে জানি, আমরা কোড লিখি যা একটি ব্যতিক্রম বাড়াতে পারে। এই ক্ষেত্রে, আমরা 'myfunction()' ব্যবহার করি। যদি প্রদত্ত পরিস্থিতি মেলে না, একটি ব্যতিক্রম ঘটে। তারপর, কোডটি অবিলম্বে ব্লক বাদ দিয়ে জাম্প করে। এই ব্যতিক্রম ব্লগে, আমরা 'logging.info' ব্যবহার করি। এর ভিতরে, আমরা যে বার্তাটি প্রিন্ট করতে চাই তা লিখি যা 'ব্যতিক্রম ঘটেছে'। এর কারণ যদি একটি ব্যতিক্রম ঘটে, একটি ত্রুটি কেবল ঘটে তবে এটি স্ক্রিনে এই বার্তাটি প্রদর্শন করে। কিন্তু যদি ত্রুটিটি না ঘটে তবে এটি সম্পূর্ণ ব্যতিক্রম বার্তাটিকে উপেক্ষা করে।

আমরা মেসেজের সাথে 'exc info=True' সেট করি। 'logger.exception()' এর সাথে যা ঘটে তার মতো exc তথ্য True এ সেট করা হলে পুরো স্ট্যাকট্রেসটি লগিংয়ে অন্তর্ভুক্ত করা হবে। একমাত্র পার্থক্য হল যে আপনি লগারকে অদলবদল করে দ্রুত লগ লেভেলকে ত্রুটি থেকে অন্য কিছুতে পরিবর্তন করতে পারেন।

এখন যেহেতু স্ক্রিপ্টে একটি ব্যতিক্রম ঘটেছে, আউটপুটের প্রথম লাইনটি হল 'ব্যতিক্রম ঘটেছে' বার্তাটি অনুসরণ করে লগিং স্তর যা স্ক্রিপ্টে ব্যবহৃত হয়েছিল যা 'তথ্য'। লগারের নাম এই ক্ষেত্রে মূল হিসাবে উপস্থিত হয়। তারপরে, ট্রেসব্যাক কলটি দেখায়, মডিউল, লাইন এবং ফাইলের নামগুলি প্রদর্শন করে। অবশেষে, ত্রুটি বার্তা 'myfunction' সংজ্ঞায়িত করা হয় না.

আসুন আরও কিছু কোড সম্পর্কে কথা বলি যা লগিং ব্যবহার করে। ব্যতিক্রম() পদ্ধতিটি লগিংয়ের জন্য লাইব্রেরি আমদানি করে শুরু হয়। এরপরে, দুটি ভেরিয়েবল - 'm' এবং 'n' - শুরু করা হয় এবং যথাক্রমে '7' এবং '0' এর মান দেওয়া হয়। ট্রাই ব্লক এখন পরবর্তী ধাপে ব্যবহৃত হয়। এর মধ্যে, আমরা কোড লিখি যা একটি ব্যতিক্রম ঘটাতে পারে। প্রথমে, আমরা 'o' ভেরিয়েবল ঘোষণা করি। তারপর, আমরা সেই 'm' কে 'n' দিয়ে ভাগ করে সেট করি। এটি একটি ব্যতিক্রম ঘটায় কারণ হরটি শূন্য এবং আমরা কোনো সংখ্যাকে শূন্য দিয়ে ভাগ করতে পারি না, যার মানে ত্রুটি দেখা দেবে। ফলস্বরূপ, কোডটি সেই ব্লকে চলে যায় যেখানে 'logging.error' ব্যবহার করা হয়। ত্রুটি লগিং স্তর. যদি একটি ব্যতিক্রম ঘটে, আমরা একটি বার্তা বা বিবৃতি প্রিন্ট করি যেটি বলে, 'ব্যতিক্রম ঘটেছে' এবং আমরা 'exc info=true' সেট করি। যদি আমরা এটিকে সত্যে সেট না করি, তবে এটি শুধুমাত্র ব্যতিক্রম ব্লক প্রিন্ট করে এবং ট্রেসব্যাক তথ্য প্রদর্শন করে না।

যেহেতু আমরা আমাদের স্ক্রিপ্টে 'ত্রুটি' স্তরটি বেছে নিয়েছি, এটি প্রথমে লগারের নাম হিসাবে রুটটি প্রদর্শন করে, তারপরে 'ব্যতিক্রম ঘটেছে' বার্তাটি দেখায়। ফাইলের নাম, লাইন নম্বর এবং মডিউল অন্তর্ভুক্ত ট্রেসব্যাক তথ্য তারপর দেখানো হয়। পরবর্তী লাইনটি একটি ত্রুটি বিজ্ঞপ্তি দেখায় যেহেতু হরটি শূন্য হতে পারে না। এবং যেহেতু এই কোডে হরটি শূন্য, ত্রুটিটিকে শূন্য-ভাজক ত্রুটি হিসাবে উল্লেখ করা হয়।

উপসংহার

এই নিবন্ধে, আমরা পাইথন লগে একটি স্ট্যাকট্রেস প্রিন্ট করার প্রক্রিয়ার পাশাপাশি স্ট্যাক ট্রেস তৈরি করতে ট্রেসব্যাক মডিউলটি কীভাবে ব্যবহার করতে হয় তা দেখেছি। প্রথম উদাহরণে, ট্রেসব্যাক লাইব্রেরি আমদানি করা হয়েছিল এবং চেষ্টা এবং ছাড়া পদ্ধতি ব্যবহার করা হয়েছিল। কোডটি ট্রাই বক্সে লেখা ছিল। যদি একটি ব্যতিক্রম ঘটে, এটি দ্রুত ব্যতিক্রম ব্লকে চলে যায় এবং স্ক্রিনে ব্যতিক্রম বিবৃতি প্রদর্শন করে। দ্বিতীয় উদাহরণে, আমরা লগিং ব্যবহার করেছি যা প্রথম উদাহরণের মতো। ব্যতিক্রম() পদ্ধতি লগিং এর 'তথ্য' এবং 'ত্রুটি' স্তর ব্যবহার করে। যদি একটি ব্যতিক্রম ঘটে, এটি একটি ব্যতিক্রম বিবৃতি প্রদর্শন করে।