معرفی ماژول logging
و نحوه استفاده از آن در پایتون
ماژول logging
یکی از ابزارهای استاندارد و قدرتمند پایتون برای ثبت رویدادها (logها) در برنامهها است. ثبت لاگها به شما کمک میکند که رفتار برنامه را در زمان اجرا پیگیری کنید، خطاها را سریعتر پیدا کنید و اطلاعات مهمی از روند اجرای برنامه داشته باشید.
چرا از logging استفاده کنیم؟
استفاده از print()
برای نمایش پیامهای دیباگ مناسب است اما در پروژههای بزرگ و حرفهای، ثبت لاگ با logging
مزایای زیر را دارد:
- امکان تعیین سطح اهمیت پیامها
- ذخیره لاگها در فایل یا ارسال به منابع مختلف
- قابلیت غیرفعالکردن یا فیلتر کردن لاگها بدون تغییر کد
- فرمتبندی قابل تنظیم برای نمایش زمان، سطح، پیام و ...
درجات (سطوح) لاگ در ماژول logging
در ماژول logging
، پیامها بر اساس اهمیتشان در ۵ سطح اصلی دستهبندی میشوند:
DEBUG
: جزئیترین پیامها برای اشکالزدایی و بررسی دقیق روند برنامهINFO
: پیامهای عمومی و اطلاعرسانی درباره روند برنامهWARNING
: هشدارهایی که ممکن است باعث بروز مشکلات شوند اما برنامه ادامه میدهدERROR
: خطاهای جدی که اجرای بخشی از برنامه را مختل میکنندCRITICAL
: خطاهای بسیار جدی که ممکن است باعث توقف برنامه شوند
نمونه استفاده ساده از logging
import logging
# تنظیمات پایه logging: نمایش پیامهای با سطح DEBUG به بالا
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logging.debug('این یک پیام DEBUG است')
logging.info('این یک پیام INFO است')
logging.warning('این یک پیام WARNING است')
logging.error('این یک پیام ERROR است')
logging.critical('این یک پیام CRITICAL است')
خروجی این کد چیزی شبیه به زیر خواهد بود:
2025-08-03 12:00:00,123 - DEBUG - این یک پیام DEBUG است
2025-08-03 12:00:00,124 - INFO - این یک پیام INFO است
2025-08-03 12:00:00,125 - WARNING - این یک پیام WARNING است
2025-08-03 12:00:00,126 - ERROR - این یک پیام ERROR است
2025-08-03 12:00:00,127 - CRITICAL - این یک پیام CRITICAL است
تنظیمات پیشرفتهتر logging
میتوانید لاگها را در فایل ذخیره کنید، قالب نمایش را تغییر دهید، و حتی چندین لاگر (logger) با تنظیمات مختلف داشته باشید. مثلاً:
logging.basicConfig(
filename='app.log',
filemode='w', # حالت نوشتن، هر بار فایل را پاک میکند
level=logging.INFO,
format='%(levelname)s:%(message)s'
)
logging.info('این پیام داخل فایل ذخیره میشود')
در این حالت پیامها در فایل app.log
ذخیره میشوند و در کنسول نمایش داده نمیشوند.
نتیجهگیری: ماژول logging
ابزاری حیاتی برای توسعه پروژههای حرفهای است که با کمک آن میتوانید پیامهای مهم برنامه را به شکل ساختاریافته ثبت و مدیریت کنید.