HTTP Logging در ASP.NET Core
![HTTP Logging in ASP.NET Core HTTP Logging in ASP.NET Core](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/1.png)
HTTP Logging یک میان افزار (middleware) است که اطلاعات مربوط به درخواست های HTTP و پاسخ های HTTP را ثبت می کند. HTTP Logging گزارش هایی از موارد زیر را ارائه می دهد:
1- اطلاعات درخواست HTTP
2- خواص مشترک
3- سرصفحه ها (Headers)
4- Body
5- اطلاعات پاسخ HTTP
HTTP Logging در چندین سناریوی زیر ارزشمند است:
1-زمانی که بخواهید اطلاعات مربوط به درخواست ها و پاسخ های دریافتی را ثبت کنید.
2-فیلتر کنید کدام بخش از درخواست و پاسخ ثبت شده است.
3-فیلتر کردن هدرهایی که باید ثبت شوند.
HTTP Logging می تواند کارایی یک برنامه را کاهش دهد، به ویژه هنگام ثبت بدنه های درخواست و پاسخ. هنگام انتخاب فیلدها برای ثبت، تأثیر کارایی را در نظر بگیرید. تأثیر کارایی ویژگی های ورود به سیستم انتخاب شده را آزمایش کنید.
HTTP Logging به طور بالقوه می تواند اطلاعات قابل شناسایی شخصی (PII) را ثبت کند. ریسک را در نظر بگیرید و از ثبت اطلاعات حساس خودداری کنید.
فعال کردن HTTP logging
HTTP Logging با استفاده از UseHttpLogging فعال می شود، که میان افزارHTTP logging را اضافه می کند.
![فعال کردن HTTP logging فعال کردن HTTP logging](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/2.png)
به طور پیش فرض، HTTP Logging ویژگی های رایجی مانند مسیر (path)، کد وضعیت (status-code) و هدرها (headers) را برای درخواست ها و پاسخ ها ثبت می کند. خط زیر را به فایل appsettings.Development.json در "LogLevel" اضافه کنید:
![فعال کردن HTTP logging فعال کردن HTTP logging](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/3.png)
خروجی به صورت یک پیام در LogLevel.Information ثبت می شود.
![HTTP Logging in asp.net core HTTP Logging in asp.net core](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/4.png)
HTTP Logging options
برای پیکربندی میان افزار HTTP logging ، AddHttpLogging را در Program.cs فراخوانی کنید.
![HTTP Logging options HTTP Logging options](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/5.png)
LoggingFields
HttpLoggingOptions.LoggingFields یک فلگ enum است که بخش های خاصی از تقاضا و پاسخ برای ثبت را پیکربندی می کند. HttpLoggingOptions.LoggingFields به طور پیش فرض روی RequestPropertiesAndHeaders | ResponsePropertiesAndHeaders. است.
RequestHeaders
Headers مجموعه ای از HTTP Request Headers هستند که مجاز به ثبت نام هستند. مقادیر Header فقط برای نام های Header که در این مجموعه هستند ثبت می شوند. کد زیر درخواست هدر "sec-ch-ua" را ثبت می کند. اگر logging.RequestHeaders.Add("sec-ch-ua") حذف شود، مقدار هدر درخواست "sec-ch-ua" ویرایش می شود. کد هایلایت شده زیر HttpLoggingOptions.RequestHeaders و HttpLoggingOptions.ResponseHeaders را فراخوانی می کند:
![RequestHeaders RequestHeaders](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/6.png)
MediaTypeOptions
MediaTypeOptions پیکربندی را برای انتخاب کدگذاری مورد استفاده برای یک نوع رسانه خاص فراهم می کند.
![MediaTypeOptions MediaTypeOptions](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/7.png)
متدهای MediaTypeOptions عبارت است از:
AddText
AddBinary
Clear
RequestBodyLogLimit و ResponseBodyLogLimit
RequestBodyLogLimit
ResponseBodyLogLimit
![MediaTypeOptions MediaTypeOptions](../../../uploadedImages/articleContent/ASPCore/23-%20http%20logging/8.png)