✅ لاگ کردن خطاها در ASP .NET Core توسط Exception Filter
در ASP .NET Core قابلیتی داریم به نام Filter که این اجازه رو بهمون میده که در مراحل خاصی از پردازش Request وارده، کد های دلخواهمون رو اجرا کنیم. مثلا میتونیم قبل یا بعد از اجرای اکشن، کدی رو اجرا کنیم
به عنوان مثال، یکی از پرکاربرد ترین اکشن فیلتر ها، همین اتیریبیوت [Authorize] هست که قبل از اجرای اکشن مربوطه، احراز هویت رو چک میکنه و در صورتی که کاربر لاگین نکرداه باشه یا دسترسی نداشته باشه، پردازش رو خاتمه میده
این قابلیت بهمون این امکان رو میدن که یه سری از کار های تکراری (یا بهتره بگم cross-cutting concerns) که در لازمه طی پردازش یک درخواست انجام بشن رو براحتی و بدون تکرار کردن کد ها هندل کنیم.
از جمله کار های جالبی که میشه با فیلتر ها انجام داد:
1️⃣ مثلا میتونیم مقادیر ورودی کاربر رو قبل از اجرای اکشن ها به صورت خودکار اعتبار سنجی (ModelState Validation) کنیم تا لازم نباشه ابتدای هر اکشن متد ModelState.IsValid رو چک کنیم
2️⃣ میتونیم خروجی API ها رو یک دست کنیم تا طبق یک ساختار واحد و استاندارد به کلاینت فرستاده بشن (که این مورد در API نویسی بسیار مرسوم هست)
3️⃣ میتونیم مدت زمان اجرای هر اکشن رو اندازه گیری کنیم و در صورتی که بیش از یه مدت مشخصی (مثلا 15 ثانیه) طول بکشه اون رو لاگ کنیم یا یه هشدار صادر کنیم
در ASP .NET Core، فیلتر های مختلفی وجود داره که هرکدوم کاربرد خودشون رو دارن. یکی از این فیلتر ها ExceptionFilter هست که به هنگام رخ دادن Exception ها اجرا میشه
در این مقاله میخوایم به بررسی کامل ExceptionFilter ها بپردازیم و در نهایت یک ExceptionFilter سفارشی بنویسیم که تمام خطا هایی که توی MVC Pipeline مون رخ میده رو متوجه بشیم و توسط EF Core، اون ها رو توی دیتابیس لاگ کنیم
پس با من همراه باشید
https://vrgl.ir/RwHGM
#آرمین_شعیبی_نژاد
__________________
@DotNetZoom
Post #1099
2.96K