Python:
লগিং
কিভাবে:
পাইথনে লগিংয়ের জন্য একটি বিল্ট-ইন মডিউল রয়েছে। এখানে একটি বেসিক সেটআপ দেওয়া হল:
import logging
# লগিংয়ের বেসিক কনফিগারেশন
logging.basicConfig(level=logging.INFO)
# লগিং মেসেজ
logging.debug('এটি একটি ডিবাগ মেসেজ')
logging.info('আপনার প্রোগ্রামে যা ঘটেছে তার তথ্য')
logging.warning('একটি সতর্কীকরণ মেসেজ')
logging.error('একটি ত্রুটি ঘটেছে')
logging.critical('প্রোগ্রাম পুনরুদ্ধার করতে অক্ষম!')
আপনি যখন এই কোড চালাবেন, নিম্নলিখিত আউটপুট দেখতে পাবেন (ডিফল্ট লেভেল WARNING হওয়ায়, debug এবং info মেসেজগুলি দেখানো হবে না):
WARNING:root:একটি সতর্কীকরণ মেসেজ
ERROR:root:একটি ত্রুটি ঘটেছে
CRITICAL:root:প্রোগ্রাম পুনরুদ্ধার করতে অক্ষম!
কনসোলের পরিবর্তে ফাইলে লগিং সেট আপ করতে পারেন:
logging.basicConfig(filename='app.log', filemode='w', level=logging.INFO)
এখন আপনার লগগুলি ‘app.log’ ফাইলে নির্দেশিত হবে।
গভীর ডুব
লগিং প্রোগ্রামিংয়ের প্রথম দিন থেকেই প্রচলিত, সিস্টেম লগগুলি ডেটা ধারণকারী বাস্তব ফাইলের বাইরে স্থায়ী সঞ্চয়ের প্রাচীনতম রূপ হিসেবে গণনা করা হয়। ইতিহাসটি সরিয়ে দিলেও, লগিংয়ের মূল ধারণা মূলত অপরিবর্তিত থাকলেও, টূলগুলি বিকশিত হয়েছে।
পাইথনের logging
মডিউলটি বেশ শক্তিশালী এবং নমনীয়। এটি প্রোগ্রামারদের বিভিন্ন লগ লেভেল (DEBUG, INFO, WARNING, ERROR, CRITICAL) সেট করে লগগুলিকে বিভাগীয় এবং ফিল্টার করার সুযোগ দেয়। এতে একটি জেরার্কিকাল লগার সিস্টেম রয়েছে, অর্থাৎ আপনি লগারদের মধ্যে অভিভাবক-শিশু সম্পর্ক তৈরি করতে এবং চেইন আপ বার্তা প্রচার করতে পারেন।
বিকল্পগুলিতে Loguru বা structlog মত থার্ড-পার্টি লাইব্রেরিগুলি অন্তর্ভুক্ত, যা বিল্ট-ইন লগিং মডিউলের চেয়ে উন্নত বৈশিষ্ট্য এবং সহজ ইন্টারফেস অফার করে। তারা সুন্দর আউটপুট, গঠনমূলক ডেটার ভালো সিরিয়ালাইজেশন, এবং লগ কনফিগারেশন সামলানোর আরও সহজ উপায় প্রদান করতে পারে।
বাস্তবায়নের বিষয়ে, লগিং সেট আপ করার সময় এটি একবার অ্যাপ্লিকেশন শুরুর সময় করা উচিত। মডিউল-লেভেলে logging.getLogger(__name__)
ব্যবহার করে পাইথন লগিং সেরা অনুশীলনগুলি অনুসরণ করা প্রস্তাবিত।
সাধারণ পরিস্থিতিতে লগিং একটি অ্যাপ্লিকেশনের পারফরম্যান্সে গুরুতরভাবে প্রভাব ফেলা উচিত নয়। তবে, কী লগ করা হচ্ছে তা নিয়ে সতর্ক থাকা উচিত: বিশেষ করে DEBUG লেভেলে অত্যধিক বাচনিক লগিং একটি অ্যাপ্লিকেশনকে ধীর করে দিতে পারে এবং দ্রুত লগ ফাইল স্টোরেজ ভরে ফেলতে পারে।
আরও দেখুন
পাইথনের লগিং মডিউল সম্পর্কে আরও জানতে, অফিসিয়াল পাইথন লগিং কুকবুক দেখুন, কিছু চমৎকার উদাহরণ ও সেরা অনুশীলনের জন্য: https://docs.python.org/3/howto/logging-cookbook.html
গঠনমূলক লগিং এবং এটি কীভাবে লগগুলিকে আরও তথ্যমূলক ও বিশ্লেষণে সহজ করে তোলে তা জানার জন্য Loguru ভালোভাবে ডকুমেন্টেড: https://loguru.readthedocs.io
আধুনিক অ্যাপ লগিং পদ্ধতির উপর একটি নজর দিন, বিশেষত 12-ফ্যাক্টর অ্যাপ পদ্ধতির লগ সেকশনে: https://12factor.net/logs