استفاده از Loguru برای لاگگیری در پایتون
در توسعه نرمافزار، لاگگیری (Logging) یکی از جنبههای حیاتی برای عیبیابی، مانیتورینگ و درک رفتار برنامهها است. پایتون به طور پیشفرض ماژول logging را ارائه میدهد، اما استفاده از آن میتواند پیچیده و نیازمند پیکربندیهای زیاد باشد. کتابخانه Loguru یک جایگزین مدرن و کاربرپسند برای ماژول logging است که با هدف سادهسازی فرآیند لاگگیری طراحی شده است. این مقاله به بررسی جامع Loguru، ویژگیها، نصب، پیکربندی و کاربردهای آن در پروژههای پایتون میپردازد. این مقاله در دسته ‘کتابخانههای خاص و کاربردی’ در آموزش پایتون قرار میگیرد.
چرا Loguru؟
Loguru نسبت به ماژول استاندارد logging پایتون مزایای متعددی دارد:
- سادگی: پیکربندی و استفاده از
Loguruبسیار سادهتر است. - خوانایی: خروجی لاگها به طور پیشفرض رنگی و خوانا است.
- انعطافپذیری: امکانات گستردهای برای سفارشیسازی فرمت لاگها و مقصد آنها فراهم میکند.
- کارایی:
Loguruبه گونهای طراحی شده است که کارایی بالایی داشته باشد و تاثیر کمی بر عملکرد برنامه بگذارد. - پشتیبانی از Context Managers: امکان استفاده از
Loguruدر context managers برای لاگگیری در بلوکهای کد خاص.
نصب Loguru
نصب Loguru بسیار ساده است و میتوان آن را با استفاده از pip انجام داد:
pip install loguru
پیکربندی اولیه Loguru
پس از نصب، میتوان به راحتی از Loguru در برنامه پایتون خود استفاده کرد. سادهترین حالت استفاده، لاگگیری به کنسول با فرمت پیشفرض است:
from loguru import logger
logger.debug("این یک پیام دیباگ است.")
logger.info("این یک پیام اطلاعاتی است.")
logger.warning("این یک پیام هشدار است.")
logger.error("این یک پیام خطا است.")
logger.critical("این یک پیام بحرانی است.")
این کد، پیامهای مختلف را با سطوح مختلف (Debug, Info, Warning, Error, Critical) به کنسول چاپ میکند. خروجی به طور پیشفرض رنگی است و شامل زمان، سطح لاگ و پیام میشود.
پیکربندی پیشرفته Loguru
Loguru امکانات گستردهای برای پیکربندی پیشرفته دارد. میتوان فرمت لاگها، مقصد آنها (فایل، کنسول، شبکه و غیره) و سطوح لاگگیری را سفارشیسازی کرد.
1. ذخیره لاگها در فایل
برای ذخیره لاگها در یک فایل، میتوان از تابع add() استفاده کرد:
from loguru import logger
logger.add("file.log", rotation="10 MB", retention="1 week")
در این مثال، لاگها در فایل file.log ذخیره میشوند. پارامتر rotation تعیین میکند که فایل لاگ پس از رسیدن به حجم 10 مگابایت، چرخش کند (یک فایل جدید ایجاد شود). پارامتر retention تعیین میکند که فایلهای لاگ قدیمیتر از یک هفته حذف شوند.
2. سفارشیسازی فرمت لاگ
میتوان فرمت لاگها را با استفاده از پارامتر format در تابع add() سفارشیسازی کرد. از رشتههای فرمتبندی خاصی میتوان برای نمایش اطلاعات مختلف استفاده کرد:
from loguru import logger
logger.add("file.log", format="{time} | {level} | {message}")
در این مثال، فرمت لاگها به صورت “زمان | سطح | پیام” خواهد بود.
3. فیلتر کردن لاگها
میتوان با استفاده از تابع filter()، لاگها را بر اساس سطوح مختلف فیلتر کرد.
from loguru import logger
logger.add("file.log", filter=lambda record: record["level"].name == "ERROR")
در این مثال، فقط پیامهای خطا در فایل file.log ذخیره میشوند.
4. استفاده از Context Managers
Loguru امکان استفاده از context managers را برای لاگگیری در بلوکهای کد خاص فراهم میکند.
from loguru import logger
with logger.catch():
# کد احتمالا دارای خطا
result = 10 / 0
در این مثال، اگر خطایی در داخل بلوک with رخ دهد، Loguru به طور خودکار آن را لاگ میکند.
مثالهای کاربردی
در اینجا چند مثال کاربردی از نحوه استفاده از Loguru در پروژههای پایتون آورده شده است:
1. لاگگیری در یک تابع
from loguru import logger
def divide(a, b):
logger.debug(f"تقسیم {a} بر {b}")
try:
result = a / b
logger.info(f"نتیجه تقسیم: {result}")
return result
except ZeroDivisionError:
logger.error("تقسیم بر صفر!")
return None
2. لاگگیری در یک کلاس
from loguru import logger
class MyClass:
def __init__(self, name):
self.name = name
logger.info(f"ایجاد شیء از کلاس {self.__class__.__name__} با نام {self.name}")
def my_method(self):
logger.debug(f"اجرای متد {self.__class__.__name__}.my_method")
# کد متد
3. لاگگیری در یک برنامه وب
Loguru میتواند به راحتی در برنامههای وب پایتون (مانند Flask یا Django) استفاده شود. میتوان آن را با middleware یا interceptorهای مربوطه ادغام کرد تا درخواستها و پاسخها را لاگ کند.
نکات مهم
- سطوح لاگگیری: از سطوح لاگگیری مناسب برای پیامهای مختلف استفاده کنید.
- فرمت لاگ: فرمت لاگها را به گونهای تنظیم کنید که اطلاعات مورد نیاز را به راحتی قابل مشاهده کند.
- مقصد لاگ: مقصدهای لاگ را با توجه به نیازهای خود انتخاب کنید (فایل، کنسول، شبکه و غیره).
- چرخش لاگ: از چرخش لاگ برای جلوگیری از پر شدن فضای دیسک استفاده کنید.
- حذف لاگهای قدیمی: از حذف لاگهای قدیمی برای مدیریت فضای دیسک استفاده کنید.
نتیجهگیری
Loguru یک کتابخانه قدرتمند و کاربرپسند برای لاگگیری در پایتون است که با هدف سادهسازی فرآیند لاگگیری طراحی شده است. با استفاده از Loguru، میتوان به راحتی لاگها را در فایلها، کنسول یا سایر مقصدهای مورد نظر ذخیره کرد و فرمت آنها را سفارشیسازی کرد. Loguru یک جایگزین عالی برای ماژول استاندارد logging پایتون است و میتواند به بهبود کیفیت و قابلیت نگهداری پروژههای پایتون کمک کند.

بدون دیدگاه