فهرست منبع

返回临时保存

qinchaoyue 6 ماه پیش
والد
کامیت
82b7b64ea3

+ 1 - 0
.gitignore

@@ -31,6 +31,7 @@ bld/
 *.Comments.xml
 document.xml
 Document.xml
+logs/
 
 # Visual Studio 2015/2017 cache/options directory
 .vs/

+ 3 - 2
src/Hotline.Api/Controllers/OrderController.cs

@@ -3751,9 +3751,10 @@ public class OrderController : BaseController
 
         rsp.LeaderSMS = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.LeaderSMS)
             .Select(m => new Kv { Key = m.Id, Value = m.DicDataName }).ToList();
-        if (_appOptions.Value.IsZiGong)
+        var opinion = await _typeCache.GetAsync($"tmp_opinion_{orderId}{_sessionContext.UserId}", HttpContext.RequestAborted);
+        if (opinion.IsNullOrEmpty())
         {
-            rsp.Opinion = await _typeCache.GetAsync($"tmp_opinion_{orderId}{_sessionContext.UserId}", HttpContext.RequestAborted);
+            rsp.Opinion = opinion;
         }
 
         rsp.TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity)

+ 0 - 7
src/Hotline.Api/Hotline.Api.csproj

@@ -7,13 +7,6 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;1803;</NoWarn>
   </PropertyGroup>
-
-  <ItemGroup>
-    <Compile Remove="logs\**" />
-    <Content Remove="logs\**" />
-    <EmbeddedResource Remove="logs\**" />
-    <None Remove="logs\**" />
-  </ItemGroup>
   
   <ItemGroup>
     <PackageReference Include="FluentValidation.AspNetCore" Version="11.3.0" />

+ 2 - 0
src/Hotline.Api/StartupExtensions.cs

@@ -34,6 +34,7 @@ using Hotline.Api.Middleware;
 using XF.Domain.Authentications;
 using Hotline.XingTang;
 using Hotline.Logger;
+using HotPot.Mvc.Filters;
 
 namespace Hotline.Api;
 
@@ -100,6 +101,7 @@ internal static class StartupExtensions
             {
                 options.Filters.Add<UnifyResponseFilter>();
                 options.Filters.Add<UserFriendlyExceptionFilter>();
+                options.Filters.Add<ErrorHandlingFilter>();
             })
             ;
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Hotline.Api/logs/20241028-log.txt


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 4
src/Hotline.Api/logs/acc-log-20241028.txt


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Hotline.Api/logs/acc-log-20241029.txt


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Hotline.Api/logs/acc-log20241028.txt


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Hotline.Api/logs/log20241028.txt


+ 28 - 27
src/Hotline.Logger/Filters/ErrorHandlingFilter.cs

@@ -1,6 +1,9 @@
 
 using System;
+using Hotline.Logger.Models;
+using Hotline.Share.Tools;
 using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Serilog;
 
@@ -16,17 +19,20 @@ namespace HotPot.Mvc.Filters
         /// </summary>
         private readonly Serilog.ILogger _logger;
 
-        public ErrorHandlingFilter(ILogger logger)
+        private readonly IConfiguration _configuration;
+
+        public ErrorHandlingFilter(ILogger logger, IConfiguration configuration)
         {
+            _configuration = configuration;
             _logger = new LoggerConfiguration()
-    .WriteTo.Logger(configure => configure
-    .MinimumLevel.Debug()
-    .WriteTo.RollingFile(
-        Path.Combine("logs", "acc-log-{Date}.txt"),
-        retainedFileCountLimit: 7,
-        outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
-    ))
-    .CreateLogger();
+                .WriteTo.Logger(configure => configure
+                .MinimumLevel.Debug()
+                .WriteTo.RollingFile(
+                    Path.Combine("logs", "err-log-{Date}.txt"),
+                    retainedFileCountLimit: 7,
+                    outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
+                ))
+                .CreateLogger();
 
         }
 
@@ -36,24 +42,19 @@ namespace HotPot.Mvc.Filters
         /// <param name="context">异常</param>
         public void OnException(ExceptionContext context)
         {
-                          // MvcLog.Exception(context.Exception);
-                var logger = ServiceLocator.Instance.GetService<ILogOut>();
-                try
-                {
-                    if (context.HttpContext.Request.Method.ToUpper() == "GET")
-                    {
-                        logger.Error(
-                            "Method:" + context.HttpContext.Request.Method + " Path:" + context.HttpContext.Request.Path,
-                            context.HttpContext.Request.QueryString,
-                            context.HttpContext.Request.Headers["token"],
-                            context
-                            );
-                    }
-                }
-                catch (Exception e)
-                {
-                    Logs.Err("新的日志记录报错:" + e.Message);
-                }
+            if (_configuration.GetSection("AccLog").Get<bool>() == false) return;
+            var exceptionModel = new ExceptionModel();
+            try
+            {
+                context.HttpContext.Items.TryAdd("ErrorId", exceptionModel.Id);
+                exceptionModel.Context = context.Exception.ToJson();
+                exceptionModel.Message = context.Exception.Message;
+                _logger.Error(exceptionModel.ToJson());
+            }
+            catch
+            {
+                // ignore
+            }
         }
     }
 }

+ 10 - 1
src/Hotline.Logger/Models/AccModel.cs

@@ -50,7 +50,7 @@
         /// 异常ID
         /// 调用服务有异常时,异常信息的日志ID,没异常日志时为空
         /// </summary>
-        public string ErrorId { get; set; }
+        public string? ErrorId { get; set; }
 
         /// <summary>
         /// 返回值
@@ -58,5 +58,14 @@
         /// </summary>
         public string OutResult { get; set; } = string.Empty;
 
+        /// <summary>
+        /// 用户
+        /// </summary>
+        public string User { get; set; }
+
+        /// <summary>
+        /// 用户字段Key
+        /// </summary>
+        public string UserKey = "user_display_name";
     }
 }

+ 13 - 0
src/Hotline.Logger/RequestResponseLoggingMiddleware.cs

@@ -51,6 +51,7 @@ namespace Hotline.Logger
             {
                 var requestTime = DateTime.Now;
                 var accModel = new AccModel();
+                context.Items.TryAdd("AccId", accModel.Id);
                 await GetMethod(context, injectedRequestStream, accModel);
                 var originalBodyStream = context.Response.Body;
                 using (var responseBody = new MemoryStream())
@@ -59,6 +60,8 @@ namespace Hotline.Logger
                     await _next(context);
 
                     accModel = await FormatResponse(context.Response, requestTime, accModel);
+                    if (context.Items.TryGetValue("ErrorId", out var errorId))
+                        accModel.ErrorId = errorId.ToString();
                     _logger.Information(accModel.ToJson());
                     await responseBody.CopyToAsync(originalBodyStream);
                 }
@@ -136,6 +139,16 @@ namespace Hotline.Logger
                     accModel.Method = context.Request.Path;
                     accModel.ServiceUrl = context.Request.Host.ToString();
                 }
+
+                try
+                {
+                    accModel.User = context.User.Identities
+                        .First().Claims
+                        .Where(m => m.Type == accModel.UserKey)
+                        .Select(m => m.Value)
+                        .First();
+                }
+                catch { }
             }
             catch (Exception e)
             {

+ 1 - 1
src/Hotline.Share/Dtos/FlowEngine/NextStepsDto.cs

@@ -55,7 +55,7 @@ public class NextStepsDto<TSteps> : NextStepsDto
 public class NextStepsWithOpinionDto<TSteps> : NextStepsDto<TSteps>
 {
     /// <summary>
-    /// 宜宾需求:汇总节点办理前展示前一节点办理意见
+    /// 宜宾需求:汇总节点办理前展示前一节点办理意见, 如果有临时保存就覆盖
     /// 自贡需求: 临时保存的办理意见
     /// </summary>
     public string? Opinion { get; set; }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است