یک اسکریپت پایتون بنویسید که یک logger سفارشی بسازد، سطح لاگ را از متغیر محیطی خوانده و با logger.setLevel تنظیم کند، پیام‌های DEBUG/INFO/ERROR را ثبت کند و یک تست واحد با assertLogs بنویسد که نشان دهد پیام DEBUG وقتی سطح روی DEBUG است ثبت می‌شود.

1.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:57

0.0

از ماژول استاندارد logging استفاده کنید: یک logger با logging.getLogger بسازید، سطح را با os.environ.get('LOG_LEVEL','INFO') خوانده و با getattr(logging, level_str.upper(), logging.INFO) یا logging._nameToLevel به مقدار مناسب تبدیل و سپس با logger.setLevel تنظیم کنید. برای خروجی ساده از logging.basicConfig و فرمت مناسب استفاده کنید. برای تست از unittest و context manager assertLogs استفاده کنید تا در صورت تنظیم سطح روی DEBUG وجود پیام مورد نظر را بررسی کنید؛ در تست می‌توانید با unittest.mock.patch.dict یا تنظیم موقت متغیر محیطی سطح لاگ را تغییر دهید. این رویکرد برای دیباگ محلی و پیکربندی در محیط‌های DevOps (با تغییر متغیر محیطی) مناسب است.

توسط پژوهشگر در 202 روز قبل ساعت 02:57
دسته بندی ها: Python Python for beginner
arash در 202 روز قبل ساعت 07:56

نکته کلیدی این است که سطح لاگ را از رشته محیطی تبدیل کنید با استفاده از سطح عمومی: level = getattr(logging, level_str.upper(), logging.INFO) و از استفاده از نام‌های داخلی مثل logging._nameToLevel پرهیز کنید. برای جلوگیری از ثبت دوباره پیام‌ها با استفاده از basicConfig، در تست‌ها مطمئن شوید که یا آن را دوباره پیکربندی نکنید یا هَندلرها را پاک کنید. برای تست با assertLogs می‌توانید با patch.dict(os.environ, {'LOG_LEVEL': 'DEBUG'}) یا تغییر موقت متغیر محیطی، سطح را به DEBUG بگذارید تا مطمئن شوید پیام DEBUG ثبت می‌شود. این رویکرد برای دیباگ محلی و محیط‌های DevOps مناسب است.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری