From 0d07b90fd906e52ce486484aa53a6850983b1325 Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期二, 15 十月 2024 14:21:57 +0800 Subject: [PATCH] 更新 --- WIDESEAWCS_Server/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs | 117 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 58 insertions(+), 59 deletions(-) diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs b/WIDESEAWCS_Server/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs index 444b7b8..0f2909e 100644 --- a/WIDESEAWCS_Server/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs +++ b/WIDESEAWCS_Server/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.LogHelper; @@ -31,83 +32,81 @@ //todo public async Task InvokeAsync(HttpContext context) { - //if (AppSettings.app("Middleware", "RequestResponseLog", "Enabled").ObjToBool()) + // 杩囨护锛屽彧鏈夋帴鍙� + if (context.Request.Path.Value?.Contains("api") ?? false) { - // 杩囨护锛屽彧鏈夋帴鍙� - if (context.Request.Path.Value?.Contains("api") ?? false) + context.Request.EnableBuffering(); + Stream originalBody = context.Response.Body; + string requestParam = string.Empty; + string responseParam = string.Empty; + try { - context.Request.EnableBuffering(); - //Stream originalBody = context.Response.Body; - + (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now; try { // 瀛樺偍璇锋眰鏁版嵁 - //string requestParam = GetRequestData(context); - //DateTime beginDate = DateTime.Now; + requestParam = RequestDataLog(context); + context.Request.Body.Position = 0; + } + catch { } + using MemoryStream ms = new(); + context.Response.Body = ms; - //using var ms = new MemoryStream(); - //context.Response.Body = ms; + await _next(context); - await _next(context); - + try + { // 瀛樺偍鍝嶅簲鏁版嵁 - //DateTime endDate = DateTime.Now; - //string responseParam = GetResponsetData(context); + responseParam = ResponseDataLog(context.Response); + } + catch { } - //context.Response.Body.Position = 0; - //await context.Response.Body.CopyToAsync(originalBody); - - //Logger.WriteApiLog2DB(context,requestParam, beginDate, responseParam, endDate, context.Response.StatusCode == 200 ? LoggerStatus.Success : LoggerStatus.Error); - } - catch (Exception ex) - { - // 璁板綍寮傚父 - _logger.LogError(ex.Message + "" + ex.InnerException); - } - finally - { - //context.Response.Body = originalBody; - } + ms.Position = 0; + await ms.CopyToAsync(originalBody); + if (!(context.Request.Path.Value?.Contains("Get") ?? false)) + Logger.Add(requestParam, responseParam); } - //else - //{ - // await _next(context); - //} - } - //else - //{ - // await _next(context); - //} - } + catch (Exception ex) + { + // 璁板綍寮傚父 - private string GetRequestData(HttpContext context) - { - try - { - using StreamReader sr = new StreamReader(context.Request.Body); - string request = JsonConvert.SerializeObject(sr.ReadToEnd()); ; - context.Request.Body.Position = 0; - return request; + } + finally + { + context.Response.Body = originalBody; + } } - catch (Exception ex) + else { - return $"璇锋眰鍙傛暟鑾峰彇閿欒,{ex.Message}"; + await _next(context); } } - private string GetResponsetData(HttpContext context) + private string RequestDataLog(HttpContext context) { - try + var request = context.Request; + var sr = new StreamReader(request.Body); + + object obj = new { - using StreamReader sr = new StreamReader(context.Response.Body); - string response = JsonConvert.SerializeObject(sr.ReadToEnd()); ; - context.Response.Body.Position = 0; - return response; - } - catch (Exception ex) - { - return $"鍝嶅簲鍙傛暟鑾峰彇閿欒,{ex.Message}"; - } + QueryString = request.QueryString.ToString(), + BodyData = sr.ReadToEndAsync().Result + }; + + string data = JsonConvert.SerializeObject(obj); + + request.Body.Position = 0; + + return data; + } + + private string ResponseDataLog(HttpResponse response) + { + response.Body.Position = 0; + using StreamReader stream = new StreamReader(response.Body, leaveOpen: true); + string body = stream.ReadToEnd(); + response.Body.Position = 0; + return body; } } } -- Gitblit v1.9.3