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