From 8467804705615f7614c29e7ef7ac3e99f5c13a54 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 11 二月 2025 13:53:05 +0800
Subject: [PATCH] 优化WMS接口日志记录,添加接口名称和接口描述

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs |   67 +++++++++++++++++++++++++++++++--
 1 files changed, 63 insertions(+), 4 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs"
index d833379..1d9a8b7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs"
@@ -1,13 +1,21 @@
 锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.OpenApi.Models;
 using SqlSugar;
+using StackExchange.Profiling.Internal;
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Data;
+using System.IO;
 using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization.Formatters;
 using System.Text;
 using System.Threading.Tasks;
+using System.Xml.Linq;
 using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.HttpContextUser;
 using WIDESEA_Core.Seed;
@@ -87,7 +95,7 @@
                 row["RequestParam"] = log.RequestParam?.Replace("\r\n", "").Replace("\n", "");
                 // 灏哛esponseParam涓殑鎹㈣绗︽浛鎹负绌哄瓧绗︿覆
                 row["ResponseParam"] = log.ResponseParam?.Replace("\r\n", "").Replace("\n", "");
-                //row["Success"] = log.Success ?? -1;
+                row["Success"] = log.Success ?? -1;
                 // 灏咮eginDate璁剧疆涓簂og鐨凚eginDate
                 row["BeginDate"] = log.BeginDate;
                 // 灏咵ndDate璁剧疆涓簂og鐨凟ndDate
@@ -102,6 +110,8 @@
                 row["UserId"] = log.UserId ?? -1;
                 // 灏哢serName璁剧疆涓簂og鐨刄serName
                 row["UserName"] = log.UserName;
+                row["MethodName"] = log.MethodName;
+                row["Methodremark"] = log.Methodremark;
                 // 灏唕ow娣诲姞鍒皅ueueTable涓�
                 queueTable.Rows.Add(row);
             }
@@ -115,13 +125,13 @@
             queueTable.Columns.Add("EndDate", Type.GetType("System.DateTime"));
             queueTable.Columns.Add("RequestParam", typeof(string));
             queueTable.Columns.Add("ResponseParam", typeof(string));
-            //queueTable.Columns.Add("Success", Type.GetType("System.Int32"));
+            queueTable.Columns.Add("Success", Type.GetType("System.Int32"));
             queueTable.Columns.Add("Url", typeof(string));
             queueTable.Columns.Add("UserIP", typeof(string));
             queueTable.Columns.Add("UserName", typeof(string));
             queueTable.Columns.Add("UserId", Type.GetType("System.Int32"));
-            //queueTable.Columns.Add("LogType", typeof(string));
-            //queueTable.Columns.Add("ExceptionInfo", typeof(string));
+            queueTable.Columns.Add("MethodName", typeof(string));
+            queueTable.Columns.Add("Methodremark", typeof(string));
             //queueTable.Columns.Add("ServiceIP", typeof(string));
             //queueTable.Columns.Add("BrowserType", typeof(string));
             //queueTable.Columns.Add("Role_Id", Type.GetType("System.Int32"));
@@ -131,6 +141,8 @@
         public static void Add(string requestParameter, string responseParameter)
         {
             dynamic log = null;
+            string MethodName = string.Empty;
+            string Methodremark = string.Empty;
             try
             {
                 //鑾峰彇褰撳墠HttpContext
@@ -140,11 +152,46 @@
                 {
                     return;
                 }
+
                 //濡傛灉璇锋眰鏂规硶涓篛PTIONS锛屽垯杩斿洖
                 if (context.Request.Method == "OPTIONS") return;
                 //鑾峰彇RequestLogModel瀹炰緥
                 RequestLogModel logModel = (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel) ?? new RequestLogModel { RequestDate = DateTime.Now };
+                #region 鑾峰彇鎺ュ彛娉ㄩ噴
+                try
+                {
+                    string path = context.Request.Path;
+                    var names = path.Split('/');
+                    var basePath = AppContext.BaseDirectory + "WIDESEA_WMSServer";
+                    Assembly assembly = Assembly.LoadFrom(basePath);
+                    List<Type> types = assembly.GetTypes().Where(x => x.Name.Contains(names[2] + "Controller")).ToList();
+                    if (types.Count > 0)
+                    {
+                        //MethodInfo methodInfo = types.First().GetMethod("login");
+                        MethodInfo methodInfo = types.First().GetMethods()
+                                .FirstOrDefault(m => m.Name.Equals(names[3], StringComparison.OrdinalIgnoreCase));
+                        if (methodInfo != null)
+                        {
+                            MethodName = methodInfo.Name;
+                            string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, methodInfo.DeclaringType.Assembly.GetName().Name + ".xml");
+                            //if (!File.Exists(xmlPath)) return "XML documentation file not found."; // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦�
+                            // 鍔犺浇XML鏂囨。骞惰В鏋愭憳瑕佷俊鎭�
+                            XDocument xdoc = XDocument.Load(xmlPath);
+                            string membername = $"M:{methodInfo.DeclaringType.FullName}.{methodInfo.Name}";
+                            var member = xdoc.Descendants("member")
+                                                .FirstOrDefault(m => m.Attribute("name").Value.ToString().Contains(membername));// 瀹氫綅鍒版柟娉曡妭鐐�
+                            //.FirstOrDefault(m => m.Attribute("name")?.Value == $"M:{methodInfo.DeclaringType.FullName}.{methodInfo.Name}"); // 瀹氫綅鍒版柟娉曡妭鐐�
+                            //if (member == null) return "Member not found in XML documentation."; // 妫�鏌ユ柟娉曟槸鍚﹀湪XML鏂囨。涓壘鍒�
+                            //var summary = member?.Element("summary")?.Value ?? "No summary provided."; // 鑾峰彇鎽樿淇℃伅鎴栭粯璁ゅ��
+                            Methodremark = member?.Element("summary")?.Value.Replace("\n", "").Replace(" ", "") ?? methodInfo.Name; // 鑾峰彇鎽樿淇℃伅鎴栭粯璁ゅ��
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
 
+                }
+                #endregion
                 //鑾峰彇褰撳墠鐢ㄦ埛
                 IUser user = App.User;
                 //鍒涘缓鏃ュ織瀵硅薄
@@ -158,6 +205,12 @@
                     RequestParam = requestParameter,
                     //鍝嶅簲鍙傛暟
                     ResponseParam = responseParameter,
+                    //鏂规硶鍚嶇О
+                    MethodName = MethodName,
+                    //鏂规硶鎻忚堪
+                    Methodremark= Methodremark,
+                    //鍝嶅簲鐘舵��
+                    Success = LogStatusEnum.Success.ObjToInt(),
                     //璇锋眰URL
                     Url = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path,
                     //瀹㈡埛绔疘P
@@ -181,6 +234,12 @@
                     RequestParam = requestParameter,
                     //鍝嶅簲鍙傛暟
                     ResponseParam = responseParameter,
+                    //鏂规硶鍚嶇О
+                    MethodName = MethodName,
+                    //鏂规硶鎻忚堪
+                    Methodremark = Methodremark,
+                    //鍝嶅簲鐘舵��
+                    Success = LogStatusEnum.Error.ObjToInt(),
                 };
             }
             //娣诲姞绯荤粺鏃ュ織

--
Gitblit v1.9.3