From e94d90fd7d2ec6fcb41fb6aa6fc28e3f9d39ba95 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 19 八月 2025 10:50:16 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs |   83 +++++++++++++++++++++++++----------------
 1 files changed, 50 insertions(+), 33 deletions(-)

diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs
index 1393015..ef89def 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs
@@ -11,6 +11,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.IO;
 using System.Linq;
 using System.Security.Claims;
 using System.Text;
@@ -22,44 +23,60 @@
     {
         public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
         {
-            var resourceLog = new ResourceLog();
-            resourceLog.CreatedTime = DateTimeOffset.Now;
-
             var stopwatch = Stopwatch.StartNew();
 
-            var serviceScopeFactory = App.GetService<IServiceScopeFactory>();
-            var serviceScope = serviceScopeFactory.CreateScope();
-            var rep = serviceScope.ServiceProvider.GetRequiredService<IRepository<ResourceLog, LogDbContextLocator>>();
-            var logier = JwtUtils.GetCurrentLogier();
+            StringWriter consoleWriter = new();
+            TextWriter originalConsoleOut = Console.Out;
 
-            resourceLog.Id = IDGen.NextID();
-            resourceLog.TraceId = App.GetTraceId();
-            resourceLog.Method = EnumUtils.GetEnum<EnumResourceMethod>(context.HttpContext.Request.Method);
-            resourceLog.Domain = $"{context.HttpContext.Request.Scheme}://{context.HttpContext.Request.Host}";
-            resourceLog.Path = context.HttpContext.Request.Path;
-            resourceLog.ClientIpAddress = context.HttpContext.GetRemoteIpAddressToIPv4();
-            resourceLog.CreatedUserId = logier?.Id;
-            resourceLog.CreatedEnterpriseId = logier?.EnterpriseId;
-            resourceLog.Request = context.ActionArguments?.ToJson();
-            resourceLog.RequestHeaders = context.HttpContext.Request.Headers.ToJson();
-
-            await rep.InsertNowAsync(resourceLog);
-
-            //============== 杩欓噷鏄墽琛屾柟娉曚箣鍚庤幏鍙栨暟鎹� ====================
-            var actionContext = await next();
-
-            resourceLog.UpdatedTime = DateTimeOffset.Now;
-            if (actionContext.Result is JsonResult jsonResult)
+            try
             {
-                resourceLog.Response = jsonResult.Value.ToJson();
+                Console.SetOut(consoleWriter);
+
+                var serviceScopeFactory = App.GetService<IServiceScopeFactory>();
+                var serviceScope = serviceScopeFactory.CreateScope();
+                var rep = serviceScope.ServiceProvider.GetRequiredService<IRepository<ResourceLog, LogDbContextLocator>>();
+                var logier = JwtUtils.GetCurrentLogier();
+
+                var resourceLog = new ResourceLog();
+                resourceLog.CreatedTime = DateTimeOffset.Now;
+                resourceLog.Id = IDGen.NextID();
+                resourceLog.TraceId = App.GetTraceId();
+                resourceLog.Method = EnumUtils.GetEnum<EnumResourceMethod>(context.HttpContext.Request.Method);
+                resourceLog.Domain = $"{context.HttpContext.Request.Scheme}://{context.HttpContext.Request.Host}";
+                resourceLog.Path = context.HttpContext.Request.Path;
+                resourceLog.ClientIpAddress = context.HttpContext.GetRemoteIpAddressToIPv4();
+                resourceLog.CreatedUserId = logier?.Id;
+                resourceLog.CreatedEnterpriseId = logier?.EnterpriseId;
+                resourceLog.Request = context.ActionArguments?.ToJson();
+                resourceLog.RequestHeaders = context.HttpContext.Request.Headers.ToJson();
+
+                Console.SetOut(originalConsoleOut);
+                await rep.InsertNowAsync(resourceLog);
+                Console.SetOut(consoleWriter);
+
+                //============== 杩欓噷鏄墽琛屾柟娉曚箣鍚庤幏鍙栨暟鎹� ====================
+                var actionContext = await next();
+                Console.SetOut(originalConsoleOut);
+
+                resourceLog.UpdatedTime = DateTimeOffset.Now;
+                if (actionContext.Result is JsonResult jsonResult)
+                {
+                    resourceLog.Response = jsonResult.Value.ToJson();
+                }
+                resourceLog.ResponseHeaders = context.HttpContext.Response.Headers.ToJson();
+                resourceLog.IsSuccess = actionContext.Exception == null;
+                resourceLog.ConsoleLogs = consoleWriter.ToString();
+
+                stopwatch.Stop();
+                resourceLog.ElapsedMilliseconds = stopwatch.ElapsedMilliseconds;
+
+                await rep.UpdateNowAsync(resourceLog);
             }
-            resourceLog.ResponseHeaders = context.HttpContext.Response.Headers.ToJson();
-            resourceLog.IsSuccess = actionContext.Exception == null;
-
-            stopwatch.Stop();
-            resourceLog.ElapsedMilliseconds = stopwatch.ElapsedMilliseconds;
-
-            await rep.UpdateNowAsync(resourceLog);
+            finally
+            {
+                Console.SetOut(originalConsoleOut); // 鎭㈠ Console 鍘熷杈撳嚭娴�
+                consoleWriter.Dispose(); // 閲婃斁娴佽祫婧�
+            }
         }
     }
 }

--
Gitblit v1.9.1