![ماژول logging در پایتون 3 - [Phika.ir]](http://phika.ir/wp-content/uploads/2019/02/logging-module.png)
![ماژول logging در پایتون 3 - [Phika.ir]](http://phika.ir/wp-content/uploads/2019/02/logging-module.png)
ماژول Logging یک ابزار بسیار کاربردی برای توسعه دهندگان میباشد. این ماژول کمک میکند تا درک درستی از جریان برنامه داشته باشیم.
خیلی از مواقع دیده میشه که توسعه دهنه از تابع پرینت برای دیباگ کردن استفاده میکند. ماژول لاگینگ (Logging) در ابتدایی ترین حالت، کارکردی بسیار شبیه به تابع پرینت دارد. ولی میتوان از این ماژول استفاده کرد و اطلاعات ریزتری از روند اجرای برنامه بدست آورد. با این ماژول میتوان یک فایل مختص لاگ درست کرد و لاگها را در آن به همراه زمان و تاریخ ذخیره کرد.
این ماژول یا کتابخانه نیاز به نصب ندارد و فقط کافیست آن را وارد برنامه کنیم:
1 |
import logging |
انواع لاگ ها یا سطوح لاگ ها
بطور استاندارد ۵ سطح از لحاظ شدت و اهمیت رخداد، وجود دارد:
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
استفاده از ماژول
ساده ترین حالت استفاده از این ماژول بصورت زیر است که مثل تابع پرینت عمل میکند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import logging # 0 # به جای استفاده از تابع پرینت در برنامه ها logging.basicConfig(level=logging.INFO) # 1 log_msg = '\t\tthis is a log message ...' # 2 # انواع لاگ ها logging.info(log_msg) # 3 logging.error(log_msg) logging.warning(log_msg) logging.critical(log_msg) logging.debug(log_msg) # if level=logging.DEBUG # یا به این صورت یک تابع درست میکنیم و ازون استفاده میکنیم log = logging.info log(log_msg) |
خروجی کد بالا بصورت زیر خواهد بود:
توجه:
اگر سطح لاگ را مشخص نکنیم (استفاده از logging.basicConfig بدون هیچ پارامتر ورودی) در این صورت به طور پیشفرض لاگ های INFO و DEBUG نمایش داده نخواهند شد.
پیکربندی لاگر
عموما پارامترهایی که به تابع logging.basicConfig داده میشود بصورت زیر میباشد:
- سطح: تعیین کننده سطح لاگر
- نام فایل: اگر بخواهیم لاگ ها در یک فایل ذخیره شوند
- مد فایل: مدی است که فایل لاگر (اگر وجود داشته باشد) را با آن مد باز میکند. بصورت پیشفرض a یا append میباشد.
- فرمت: فرمت خروجی را نشان میدهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import logging # 0 logging.basicConfig( format='%(asctime)s---' # زمان رخداد لاگ '%(levelname)s' # سطح لاگ '%(message)s', # پیام لاگ datefmt='%d-%b-%y %H:%M:%S', # فرمت زمان level=logging.INFO) log_msg = '\t\tthis is a log message ...' logging.info(log_msg) logging.error(log_msg) logging.warning(log_msg) logging.critical(log_msg) logging.debug(log_msg) # if level=logging.DEBUG |
ذخیره لاگ ها در یک فایل
اگر بخواهیم بجای نمایش لاگ ها در خروجی، آنها را در فایلی ذخیره کنیم میتوانیم نام فایل را نیز بدهیم (در صورت نبود این فایل، بطور خودکار ساخته خواهد شد).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
logging.basicConfig( filename='my_log.log', # اسم فایل جهت ذخیره سازی format='%(asctime)s\t' # زمان رخداد لاگ '%(levelname)s\t' # سطح لاگ '%(message)s', # پیام لاگ level=logging.INFO) # OR ---------------------------------------- ذخیره لاگ ها در فایل تکست # logging.basicConfig(filename='my_log.txt', # level=logging.INFO) log_msg = '\t\tthis is a log message ...' logging.info(log_msg) logging.error(log_msg) logging.warning(log_msg) logging.critical(log_msg) logging.debug(log_msg) # if level=logging.DEBUG |
مطالعه بیشتر: