From b3c2f1c79b528483f1c042cb1fe26675a9fecade Mon Sep 17 00:00:00 2001 From: wangjun Date: Tue, 15 Aug 2023 20:29:24 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4RequestLogMiddleware?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...eApplicationBuilderExtensionsExtensions.cs | 13 ---- .../Middlewares/RequestLogMiddleware.cs | 77 ------------------- ...eApplicationBuilderExtensionsExtensions.cs | 13 ---- .../Middlewares/RequestLogMiddleware.cs | 77 ------------------- 4 files changed, 180 deletions(-) delete mode 100644 templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs delete mode 100644 templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs delete mode 100644 templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs delete mode 100644 templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs diff --git a/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs b/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs deleted file mode 100644 index 7df40720..00000000 --- a/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Microsoft.AspNetCore.Builder; - -public static class MyProjectNameApplicationBuilderExtensionsExtensions -{ - /// - /// 记录请求响应日志 - /// - /// - public static IApplicationBuilder UseRequestLog(this IApplicationBuilder app) - { - return app.UseMiddleware(); - } -} \ No newline at end of file diff --git a/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs b/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs deleted file mode 100644 index f3c712e7..00000000 --- a/templates/abp-vnext-pro-nuget-all/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace MyCompanyName.MyProjectName.Extensions.Middlewares; - -public class RequestLogMiddleware -{ - private readonly RequestDelegate _next; - private readonly ILogger _logger; - - public RequestLogMiddleware(RequestDelegate next, - ILogger logger) - { - _next = next; - _logger = logger; - } - - public async Task InvokeAsync(HttpContext context) - { - context.Request.EnableBuffering(); - var originalBody = context.Response.Body; - if (context.Request.Path.ToString().ToLower().Contains("swagger") - || context.Request.Path.ToString().ToLower().Contains("login") - || context.Request.Path.ToString().ToLower().Contains("monitor") - || context.Request.Path.ToString().ToLower().Contains("cap") - || context.Request.Path.ToString().ToLower().Contains("hangfire") - || context.Request.Path.ToString() == "/" - ) - { - await _next(context); - } - else - { - try - { - var logRequestId = Guid.NewGuid().ToString(); - await RequestDataLog(context, logRequestId); - using (var ms = new MemoryStream()) - { - context.Response.Body = ms; - await _next(context); - ResponseDataLog(ms, logRequestId); - ms.Position = 0; - await ms.CopyToAsync(originalBody); - } - } - catch (Exception ex) - { - // 记录异常 - _logger.LogError(ex.Message + "" + ex.InnerException); - } - finally - { - context.Response.Body = originalBody; - } - } - } - - private async Task RequestDataLog(HttpContext context, - string requestId) - { - var request = context.Request; - var body = new StreamReader(request.Body); - var requestData = $" 请求路径:{request.Path}\r\n 请求Body参数:{await body.ReadToEndAsync()}"; - _logger.LogInformation($"日志中间件[Request],LogRequestId:{requestId}:请求接口信息:{requestData}"); - request.Body.Position = 0; - } - - private void ResponseDataLog(MemoryStream ms, string requestId) - { - ms.Position = 0; - var responseBody = new StreamReader(ms).ReadToEnd(); - // 去除 Html - var isHtml = Regex.IsMatch(responseBody, "<[^>]+>"); - if (!isHtml && !string.IsNullOrEmpty(responseBody)) - { - _logger.LogInformation($"日志中间件[Response],LogRequestId:{requestId}:响应接口信息:{responseBody}"); - } - } -} \ No newline at end of file diff --git a/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs b/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs deleted file mode 100644 index 7df40720..00000000 --- a/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/MyProjectNameApplicationBuilderExtensionsExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Microsoft.AspNetCore.Builder; - -public static class MyProjectNameApplicationBuilderExtensionsExtensions -{ - /// - /// 记录请求响应日志 - /// - /// - public static IApplicationBuilder UseRequestLog(this IApplicationBuilder app) - { - return app.UseMiddleware(); - } -} \ No newline at end of file diff --git a/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs b/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs deleted file mode 100644 index f3c712e7..00000000 --- a/templates/abp-vnext-pro-nuget-simplify/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Extensions/Middlewares/RequestLogMiddleware.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace MyCompanyName.MyProjectName.Extensions.Middlewares; - -public class RequestLogMiddleware -{ - private readonly RequestDelegate _next; - private readonly ILogger _logger; - - public RequestLogMiddleware(RequestDelegate next, - ILogger logger) - { - _next = next; - _logger = logger; - } - - public async Task InvokeAsync(HttpContext context) - { - context.Request.EnableBuffering(); - var originalBody = context.Response.Body; - if (context.Request.Path.ToString().ToLower().Contains("swagger") - || context.Request.Path.ToString().ToLower().Contains("login") - || context.Request.Path.ToString().ToLower().Contains("monitor") - || context.Request.Path.ToString().ToLower().Contains("cap") - || context.Request.Path.ToString().ToLower().Contains("hangfire") - || context.Request.Path.ToString() == "/" - ) - { - await _next(context); - } - else - { - try - { - var logRequestId = Guid.NewGuid().ToString(); - await RequestDataLog(context, logRequestId); - using (var ms = new MemoryStream()) - { - context.Response.Body = ms; - await _next(context); - ResponseDataLog(ms, logRequestId); - ms.Position = 0; - await ms.CopyToAsync(originalBody); - } - } - catch (Exception ex) - { - // 记录异常 - _logger.LogError(ex.Message + "" + ex.InnerException); - } - finally - { - context.Response.Body = originalBody; - } - } - } - - private async Task RequestDataLog(HttpContext context, - string requestId) - { - var request = context.Request; - var body = new StreamReader(request.Body); - var requestData = $" 请求路径:{request.Path}\r\n 请求Body参数:{await body.ReadToEndAsync()}"; - _logger.LogInformation($"日志中间件[Request],LogRequestId:{requestId}:请求接口信息:{requestData}"); - request.Body.Position = 0; - } - - private void ResponseDataLog(MemoryStream ms, string requestId) - { - ms.Position = 0; - var responseBody = new StreamReader(ms).ReadToEnd(); - // 去除 Html - var isHtml = Regex.IsMatch(responseBody, "<[^>]+>"); - if (!isHtml && !string.IsNullOrEmpty(responseBody)) - { - _logger.LogInformation($"日志中间件[Response],LogRequestId:{requestId}:响应接口信息:{responseBody}"); - } - } -} \ No newline at end of file