.Net 紀錄訪問 Server Request Response Body 方法
常常我們維運時候,沒有記錄一些 log,遇到問題也不知道發生了什麼。最近做一個專案被告知需要紀錄這些資訊,怕線上遇到問題不知道是什麼問題就很難處理。
.Net 6 紀錄 log 大法
.Net 6 原生支援,加上去你的 log 就可以看到 Request 相關資訊。
|
|
紀錄 request, response ,header 內容
這邊你會發現 Response 沒有 Body 內容,這邊可以打開。
|
|
-
logging.LoggingFields
為HttpLoggingFields.RequestPropertiesAndHeaders | HttpLoggingFields.ResponsePropertiesAndHeaders;
。
Warning奇怪,你一定會覺得很奇怪,怎麼
ResponsePropertiesAndHeaders
沒有紀錄 Response Body 內容。Flag for logging HTTP Response properties and headers. Includes ResponseStatusCode and ResponseHeaders
那
RequestPropertiesAndHeaders
沒有紀錄Authorization
,Flag for logging the HTTP Request Headers. Request Headers are logged as soon as the middleware is invoked. Headers are redacted by default with the character ‘[Redacted]’ unless specified in the RequestHeaders.
For example: Connection: keep-alive My-Custom-Request-Header: [Redacted]
-
預設
RequestBodyLogLimit
和ResponseBodyLogLimit
為32kb
,所以可以不用調整這個東西。 -
這邊預設
Authorization
是不會記錄到 header 上面,這邊可以把這個資訊紀錄到 log。
其他相關
-
c# - How to read ASP.NET Core Response.Body? - Stack Overflow
-
Log http requests/responses using ASP.NET Core HttpLoggingMiddleware
Log Requests and Responses in ASP.NET Core 3 | by Eric Anderson | ITNEXT