From 217a65fe8eb2612b7d61e9ce5f450e76bfc318f6 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期一, 09 六月 2025 17:13:15 +0800 Subject: [PATCH] 添加数据库接口日志记录 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs | 97 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 79 insertions(+), 18 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" index ee5bdd9..680b875 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -30,18 +31,35 @@ //todo public async Task InvokeAsync(HttpContext context) { + if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0) + { + context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt(); + context.Response.ContentType = "application/json"; + + var json = new WebResponseContent(); + + json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅 + json.Code = 500;//500寮傚父 + + StreamWriter streamWriter = new StreamWriter(context.Response.Body); + await streamWriter.WriteAsync(json.Serialize()); + return; + } + // 杩囨护锛屽彧鏈夋帴鍙� 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.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now; try { // 瀛樺偍璇锋眰鏁版嵁 - await RequestDataLog(context); + requestParam = RequestDataLog(context); context.Request.Body.Position = 0; } catch { } @@ -53,18 +71,20 @@ try { // 瀛樺偍鍝嶅簲鏁版嵁 - ResponseDataLog(context.Response, ms); + responseParam = ResponseDataLog(context.Response); } catch { } ms.Position = 0; await ms.CopyToAsync(originalBody); + if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true)) + Logger.Add(requestParam, responseParam); } catch (Exception ex) { // 璁板綍寮傚父 - + } finally { @@ -76,26 +96,67 @@ await _next(context); } } - - - private async Task RequestDataLog(HttpContext context) + private string RequestDataLog(HttpContext context) { var request = context.Request; + var sr = new StreamReader(request.Body); - //long length = request.Body.Length; - RequestLogInfo requestResponse = new RequestLogInfo() + + object obj; + string bodyData = sr.ReadToEndAsync().Result; + if (request.ContentLength <= 100000) { - Path = request.Path, - QueryString = request.QueryString.ToString(), - BodyData = await sr.ReadToEndAsync() - }; - var content = JsonConvert.SerializeObject(requestResponse); - if (!string.IsNullOrEmpty(content)) - { - LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "璇锋眰鏁版嵁 - 璇锋眰鏁版嵁绫诲瀷:" + requestResponse.GetType().ToString(), content }); - request.Body.Position = 0; + obj = new + { + QueryString = request.QueryString.ToString(), + BodyData = bodyData + }; } + else + { + obj = new + { + QueryString = request.QueryString.ToString(), + BodyData = "" + }; + } + string data = JsonConvert.SerializeObject(obj); + + request.Body.Position = 0; + + return data; } + private string ResponseDataLog(HttpResponse response) + { + if (response.ContentLength <= 100000) + { + response.Body.Position = 0; + using StreamReader stream = new StreamReader(response.Body, leaveOpen: true); + string body = stream.ReadToEnd(); + response.Body.Position = 0; + return body; + } + return ""; + } + + //private async Task RequestDataLog(HttpContext context) + //{ + // var request = context.Request; + // var sr = new StreamReader(request.Body); + // //long length = request.Body.Length; + // RequestLogInfo requestResponse = new RequestLogInfo() + // { + // Path = request.Path, + // QueryString = request.QueryString.ToString(), + // BodyData = await sr.ReadToEndAsync() + // }; + // var content = JsonConvert.SerializeObject(requestResponse); + // if (!string.IsNullOrEmpty(content)) + // { + // LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "璇锋眰鏁版嵁 - 璇锋眰鏁版嵁绫诲瀷:" + requestResponse.GetType().ToString(), content }); + // request.Body.Position = 0; + // } + //} private void ResponseDataLog(HttpResponse response, MemoryStream ms) { -- Gitblit v1.9.3