Logging (লগিং)
সফটওয়্যারে কোনো সমস্যা হলে বা কি হচ্ছে তা ট্রাক করার জন্য print() এর বদলে প্রফেশনালরা Logging ব্যবহার করেন। এটি সার্ভার বা অ্যাপ্লিকেশন চলাকালীন গুরুত্বপূর্ণ তথ্য সেভ করে রাখে।
১. Why Logging instead of print()?
- Storage: লগগুলো সরাসরি ফাইলে সেভ করা যায়।
- Levels: সমস্যার গুরুত্ব অনুযায়ী আলাদা আলাদা লেভেল (Warning, Error, Info) ব্যবহার করা যায়।
- Configuration: কোড না বদলেই কোড থেকে আউটপুট বন্ধ বা চালু করা যায়।
২. Logging Levels
পাইথনে ৫টি প্রধান লগিং লেভেল আছে: ১. DEBUG: বিস্তারিত তথ্য (সাধারণত ডিবাগিং এর সময় লাগে)। ২. INFO: সাধারণ কাজের তথ্য (যেমন- সার্ভার চালু হওয়া)। ৩. WARNING: অপ্রত্যাশিত কিছু ঘটেছে কিন্তু প্রোগ্রাম চলছে। ৪. ERROR: কোনো এরর এসেছে, একটি কাজ সম্পন্ন করা যায়নি। ৫. CRITICAL: বড় ধরনের এরর, যার ফলে প্রোগ্রাম বন্ধ হয়ে যেতে পারে।
৩. Basic Configuration
import logging
# কনফিগারেশন সেটআপ
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logging.info("এপ্লিকেশন শুরু হচ্ছে...")
logging.warning("মেমরি কম হতে পারে!")
logging.error("ডাটাবেস কানেকশন পাওয়া যায়নি।")৪. Logging to a File
লগ ফাইলে সেভ করতে চাইলে filename প্যারামিটার ব্যবহার করতে হয়।
logging.basicConfig(
filename='app.log',
filemode='a', # 'a' মানে Append
format='%(name)s - %(levelname)s - %(message)s'
)৫. Advanced: Handlers
আপনি চাইলে একই সাথে লগ কনসোলে এবং ফাইলে পাঠাতে পারেন। এর জন্য Handlers ব্যবহার করা হয়।
TIP
একটি প্রফেশনাল অ্যাপ্লিকেশনে সবসময় logging ব্যবহার করা উচিত যাতে ভবিষ্যতে কোনো সমস্যা হলে তা ট্র্যাক করা যায়।