TGViewer
DotNetZoom DotNetZoom @dotnetzoom · 2.82K subscribers
Post #1170 8.68K
✅ لاگ کردن جزئیات Request ها به کمک Serilog و ActionFilter

بعضی وقتا پیش میاد لازم دارید اطلاعات هر درخواست ورودی Action هامون رو به همراه جزئیات کاملشون رو جهت عیب یابی یا بررسی های آتی ثبت و Log کنیم
در اینجا یک نمونه پروژه آماده کردم که این کار رو به راحتی قرار دادن یک اتریبیوت [LogRequest] بر روی اکشن های مورد نظر انجام میده یا میتونین روی Controller یا به صورت Global ثبت اش کنین تا همه اکشن ها رو Log کنه

🔸طرز کارش به این صورته که در درون ActionFilter مذکور (LogRequest)، جزئیات لازم رو قبل و بعد از اجرا شدن Action مورد نظر Log میکنه (بنا بر نیازتون میتونین هر دیتای دلخواه دیگه ای رو هم از request و response بهش اضافه کنین)
و نهایتا برای ذخیره سازی لاگ ها هم از Serilog و از SqlServer به عنوان Sinks استفاده میکنه (در صورت دلخواه میتونین تو هر Storage/Sink دیگه ای ذخیره کنین)

🔹مسلما لاگ کردن همه درخواست ها میتونه سربار داشته باشه و شخصا پیشنهاد نیمکنم همیشه و همه جا ازش استفاده کنین ولی نکته ای که در مورد Sink های Serilog وجود داره اینه که اکثرا از Async و PeriodicBatching استفاده میکنن به این صورت که در بازه های زمانی Log ها رو به صورت Bulk ایی Insert میکنن (اونم به صورت Async که Thread ایی رو بلاک نکنن) در نتیجه از نظر پرفرمنسی در حالت بهینه ای کار میکنن

🔰از جمله جزئیاتی که در هر درخواست Log میکنه:

1- آدرس URL درخواستی به همراه مقادیر QueryString
2- مقادیر Header های Request و Response
3- مقادیر ارسالی از سمت کاربر (آرگومان های Action)
4- وضعیت ModelState به همراه Error Message ها در صورت وجود
5- مقادیر Routing بسته به Route مچ شده
6- مقادیر شی User.Identity از جمله Claim ها، Name و IsAuthenticated
7- مقدار IP Address کاربر
8- مقدار Url Referrer (آدرس هدایت کننده قبلی به این صفحه)
9- مدت زمان پردازش درخواست جاری (Elapsed Time) و زمان ثبت درخواست
10- جزئیات Exception در صورت وقوع خطا
11- وضعیت Http Status Code درخواست
12- و...

https://github.com/dotnetzoom/RequestLogger-AspNetCore
____________________
@DotNetZoom
More from @dotnetzoom
  1. Dec 27, 2021امکانات LINQ در NET 6. ✅ ۱- امکان مشخص کردن مقدار پیش‌فرض در OrDefault* var item1 = list1.…
  2. Dec 6, 2021انتقال داده ها به واسطه Azure Service Bus امروزه سرعت انتقال داده‌ها از اهمیت بالایی برخور…
  3. Nov 29, 2021اضافه شدن قابلیت Temporal Table به EF Core 6 ➖ مایکروسافت در سال 2016 قابلیت Temporal Tabl…
  4. Nov 10, 2021همه چیز در مورد NET Core 6. دیروز نسخه رسمی NET Core 6. به همراه نسخه رسمی Visual Studio 2…
  5. Nov 10, 2021نسخه نهایی NET 6.0 منتشر شد. نسخه 6.0 دات نت به صورت طولانی مدت پشتیبانی میشود (LTS) و توس…
  6. Nov 8, 2021کنفرانس NET. Conf هر سال خبرهای هیجان‌انگیزی داره. امسال هم NET. خبر های خوب و جذابی داره…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →