Browse Source

🤓日志写库额外信息处理(由于日志是队列多线程必须当前上下文时就处理)

zuohuaijun 3 năm trước cách đây
mục cha
commit
d010b4d14a

+ 1 - 1
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -4352,7 +4352,7 @@
         </member>
         <member name="M:Admin.NET.Core.Service.SysAuthService.GetUserInfo">
             <summary>
-            获取登录账号信息
+            获取登录账号
             </summary>
             <returns></returns>
         </member>

+ 4 - 4
Admin.NET/Admin.NET.Core/Entity/SysLogVis.cs

@@ -64,15 +64,15 @@ public class SysLogVis : EntityTenant
     /// <summary>
     /// 浏览器
     /// </summary>
-    [SugarColumn(ColumnDescription = "浏览器", Length = 128)]
-    [MaxLength(128)]
+    [SugarColumn(ColumnDescription = "浏览器", Length = 256)]
+    [MaxLength(256)]
     public string? Browser { get; set; }
 
     /// <summary>
     /// 操作系统
     /// </summary>
-    [SugarColumn(ColumnDescription = "操作系统", Length = 128)]
-    [MaxLength(128)]
+    [SugarColumn(ColumnDescription = "操作系统", Length = 256)]
+    [MaxLength(256)]
     public string? Os { get; set; }
 
     /// <summary>

+ 12 - 10
Admin.NET/Admin.NET.Core/Logging/DatabaseLoggingWriter.cs

@@ -26,7 +26,7 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter
         if (loggingMonitor.Validation != null) return;
 
         // 获取当前操作者
-        string account = "", realName = "";
+        string account = "", realName = "", userId = "", tenantId = "";
         if (loggingMonitor.authorizationClaims != null)
         {
             foreach (var item in loggingMonitor.authorizationClaims)
@@ -35,20 +35,18 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter
                     account = item.value;
                 if (item.type == ClaimConst.RealName)
                     realName = item.value;
+                if (item.type == ClaimConst.TenantId)
+                    tenantId = item.value;
+                if (item.type == ClaimConst.UserId)
+                    userId = item.value;
             }
         }
 
         string remoteIPv4 = loggingMonitor.remoteIPv4;
         (string ipLocation, double? longitude, double? latitude) = GetIpAddress(remoteIPv4);
 
-        if (loggingMonitor.actionName == "login" || loggingMonitor.actionName == "logout")
+        if (loggingMonitor.actionName == "userInfo" || loggingMonitor.actionName == "logout")
         {
-            if (loggingMonitor.authorizationClaims == null)
-            {
-                account = logMsg.Context?.Get(ClaimConst.Account)?.ToString();
-                realName = logMsg.Context?.Get(ClaimConst.RealName)?.ToString();
-            }
-
             _sysLogVisRep.Insert(new SysLogVis
             {
                 ControllerName = loggingMonitor.controllerName,
@@ -64,7 +62,9 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter
                 Elapsed = loggingMonitor.timeOperationElapsedMilliseconds,
                 LogDateTime = logMsg.LogDateTime,
                 Account = account,
-                RealName = realName
+                RealName = realName,
+                CreateUserId = string.IsNullOrWhiteSpace(userId) ? 0 : long.Parse(userId),
+                TenantId = string.IsNullOrWhiteSpace(tenantId) ? 0 : long.Parse(tenantId)
             });
         }
         else
@@ -93,7 +93,9 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter
                 ThreadId = logMsg.ThreadId,
                 TraceId = logMsg.TraceId,
                 Exception = loggingMonitor.exception,
-                Message = logMsg.Message
+                Message = logMsg.Message,
+                CreateUserId = string.IsNullOrWhiteSpace(userId) ? 0 : long.Parse(userId),
+                TenantId = string.IsNullOrWhiteSpace(tenantId) ? 0 : long.Parse(tenantId)
             });
         }
 

+ 3 - 9
Admin.NET/Admin.NET.Core/Service/Auth/SysAuthService.cs

@@ -30,8 +30,7 @@ public class SysAuthService : IDynamicApiController, ITransient
         SysOnlineUserService sysOnlineUserService,
         SysConfigService sysConfigService,
         IMemoryCache cache,
-        ICaptcha captcha,
-        ILogger<SysAuthService> logger)
+        ICaptcha captcha)
     {
         _userManager = userManager;
         _sysUserRep = sysUserRep;
@@ -42,7 +41,6 @@ public class SysAuthService : IDynamicApiController, ITransient
         _sysConfigService = sysConfigService;
         _cache = cache;
         _captcha = captcha;
-        _logger = logger;
     }
 
     /// <summary>
@@ -115,10 +113,6 @@ public class SysAuthService : IDynamicApiController, ITransient
         // Swagger Knife4UI-AfterScript登录脚本
         // ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
 
-        // 设置日志额外数据
-        using var scope = _logger.ScopeContext(u => u.Set(ClaimConst.Account, user.Account).Set(ClaimConst.RealName, user.RealName));
-        // _logger.LogInformation("登录日志");
-
         return new LoginOutput
         {
             AccessToken = accessToken,
@@ -127,11 +121,11 @@ public class SysAuthService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取登录账号信息
+    /// 获取登录账号
     /// </summary>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "UserInfo")]
-    [DisplayName("获取登录账号信息")]
+    [DisplayName("登录系统")]
     public async Task<LoginUserOutput> GetUserInfo()
     {
         var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);