Forráskód Böngészése

😒调整系统日志相关处理

zuohuaijun 2 éve
szülő
commit
c1c30d3573

+ 16 - 9
Admin.NET/Admin.NET.Core/Logging/DatabaseLoggingWriter.cs

@@ -14,22 +14,21 @@ namespace Admin.NET.Core;
 /// <summary>
 /// 数据库日志写入器
 /// </summary>
-public class DatabaseLoggingWriter : IDatabaseLoggingWriter
+public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
 {
+    private readonly IServiceScope _serviceScope;
     private readonly SqlSugarRepository<SysLogVis> _sysLogVisRep; // 访问日志
     private readonly SqlSugarRepository<SysLogOp> _sysLogOpRep;   // 操作日志
     private readonly SqlSugarRepository<SysLogEx> _sysLogExRep;   // 异常日志
     private readonly SysConfigService _sysConfigService; // 参数配置服务
 
-    public DatabaseLoggingWriter(SqlSugarRepository<SysLogVis> sysLogVisRep,
-        SqlSugarRepository<SysLogOp> sysLogOpRep,
-        SqlSugarRepository<SysLogEx> sysLogExRep,
-        SysConfigService sysConfigService)
+    public DatabaseLoggingWriter(IServiceScopeFactory scopeFactory)
     {
-        _sysLogVisRep = sysLogVisRep;
-        _sysLogOpRep = sysLogOpRep;
-        _sysLogExRep = sysLogExRep;
-        _sysConfigService = sysConfigService;
+        _serviceScope = scopeFactory.CreateScope();
+        _sysLogVisRep = _serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<SysLogVis>>();
+        _sysLogOpRep = _serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<SysLogOp>>();
+        _sysLogExRep = _serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<SysLogEx>>();
+        _sysConfigService = _serviceScope.ServiceProvider.GetRequiredService<SysConfigService>();
     }
 
     public async void Write(LogMessage logMsg, bool flush)
@@ -184,4 +183,12 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter
         catch { }
         return ("未知", 0, 0);
     }
+
+    /// <summary>
+    /// 释放服务作用域
+    /// </summary>
+    public void Dispose()
+    {
+        _serviceScope.Dispose();
+    }
 }

+ 20 - 6
Admin.NET/Admin.NET.Core/Logging/LoggingSetup.cs

@@ -24,13 +24,23 @@ public static class LoggingSetup
             options.IgnorePropertyTypes = new[] { typeof(byte[]) };
         });
 
-        if (App.GetConfig<bool>("Logging:File:Enabled")) // 日志写入文件
+        // 控制台日志格式化
+        services.AddConsoleFormatter(options =>
+        {
+            options.DateFormat = "yyyy-MM-dd HH:mm:ss(zzz) dddd";
+            options.WithTraceId = true;
+            options.WithStackFrame = true;
+        });
+
+        // 日志写入文件
+        if (App.GetConfig<bool>("Logging:File:Enabled")) 
         {
             Array.ForEach(new[] { LogLevel.Information, LogLevel.Warning, LogLevel.Error }, logLevel =>
             {
                 services.AddFileLogging(options =>
                 {
-                    options.WithStackFrame = true; // 显示堆栈信息
+                    options.WithTraceId = true; // 显示线程Id
+                    options.WithStackFrame = true; // 显示程序集
                     options.FileNameRule = fileName => string.Format(fileName, DateTime.Now, logLevel.ToString()); // 每天创建一个文件
                     options.WriteFilter = logMsg => logMsg.LogLevel == logLevel; // 日志级别
                     options.HandleWriteError = (writeError) => // 写入失败时启用备用文件
@@ -40,12 +50,14 @@ public static class LoggingSetup
                 });
             });
         }
-        if (App.GetConfig<bool>("Logging:Database:Enabled")) // 日志写入数据库
+
+        // 日志写入数据库
+        if (App.GetConfig<bool>("Logging:Database:Enabled")) 
         {
             services.AddDatabaseLogging<DatabaseLoggingWriter>(options =>
             {
-                options.WithStackFrame = true; // 显示堆栈信息
                 options.WithTraceId = true; // 显示线程Id
+                options.WithStackFrame = true; // 显示程序集
                 options.IgnoreReferenceLoop = false; // 忽略循环检测
                 options.WriteFilter = (logMsg) =>
                 {
@@ -53,12 +65,14 @@ public static class LoggingSetup
                 };
             });
         }
-        if (App.GetConfig<bool>("Logging:ElasticSearch:Enabled")) // 日志写入ElasticSearch
+
+        // 日志写入ElasticSearch
+        if (App.GetConfig<bool>("Logging:ElasticSearch:Enabled")) 
         {
             services.AddDatabaseLogging<ElasticSearchLoggingWriter>(options =>
             {
-                options.WithStackFrame = true; // 显示堆栈信息
                 options.WithTraceId = true; // 显示线程Id
+                options.WithStackFrame = true; // 显示程序集                
                 options.IgnoreReferenceLoop = false; // 忽略循环检测
                 options.MessageFormat = LoggerFormatter.Json;
                 options.WriteFilter = (logMsg) =>

+ 0 - 6
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -22,7 +22,6 @@ using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.HttpOverrides;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
-using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
 using OnceMi.AspNetCore.OSS;
 using System;
@@ -58,11 +57,6 @@ public class Startup : AppStartup
         });
         // 脱敏检测
         services.AddSensitiveDetection();
-        // 控制台格式化
-        services.AddConsoleFormatter(options =>
-        {
-            options.DateFormat = "yyyy-MM-dd HH:mm:ss(zzz) dddd";
-        });
 
         // Json序列化设置
         static void SetNewtonsoftJsonSetting(JsonSerializerSettings setting)