소스 검색

ElasticSearch 无法写入日志

徐少年 3 년 전
부모
커밋
ae6516c3f7
2개의 변경된 파일과 84개의 추가작업 그리고 1개의 파일을 삭제
  1. 69 0
      Admin.NET/Admin.NET.Core/Logging/ElasticSearchLogMessage.cs
  2. 15 1
      Admin.NET/Admin.NET.Core/Logging/ElasticSearchLoggingWriter.cs

+ 69 - 0
Admin.NET/Admin.NET.Core/Logging/ElasticSearchLogMessage.cs

@@ -0,0 +1,69 @@
+// Apache-2.0 License
+// Copyright (c) 2021-2022 xusn
+
+using Nest;
+
+namespace Admin.NET.Core;
+/// <summary>
+/// ES日志类
+/// </summary>
+public class ElasticSearchLogMessage
+{
+
+    /// <summary>
+    /// 记录器类别名称
+    /// </summary>
+    [Text] public string LogName { get; set; }
+
+    /// <summary>
+    /// 日志级别
+    /// </summary>
+    [Text] public string LogLevel { get; set; }
+
+    /// <summary>
+    /// 事件 Id
+    /// </summary>
+    [Text] public string EventId { get; set; }
+
+    /// <summary>
+    /// 日志消息
+    /// </summary>
+    [Text] public string Message { get; set; }
+
+    /// <summary>
+    /// 异常对象
+    /// </summary>
+    [Text] public string Exception { get; set; }
+
+    /// <summary>
+    /// 当前状态值
+    /// </summary>
+    /// <remarks>可以是任意类型</remarks>
+    [Text] public string State { get; set; }
+
+    /// <summary>
+    /// 日志记录时间
+    /// </summary>
+    [Text] public DateTime LogDateTime { get; set; } = DateTime.Now;
+
+    /// <summary>
+    /// 线程 Id
+    /// </summary>
+    [Text] public int ThreadId { get; set; }
+
+    /// <summary>
+    /// 是否使用 UTC 时间戳
+    /// </summary>
+    [Text] public bool UseUtcTimestamp { get; set; }
+
+    /// <summary>
+    /// 请求/跟踪 Id
+    /// </summary>
+    [Text] public string TraceId { get; set; }
+
+    /// <summary>
+    /// 监视
+    /// </summary>
+    [Text] public string Monitor { get; set; }
+
+}

+ 15 - 1
Admin.NET/Admin.NET.Core/Logging/ElasticSearchLoggingWriter.cs

@@ -16,6 +16,20 @@ public class ElasticSearchLoggingWriter : IDatabaseLoggingWriter
 
     public void Write(LogMessage logMsg, bool flush)
     {
-        _esClient.IndexDocument(logMsg.Context.Get("loggingMonitor"));
+        var document = new ElasticSearchLogMessage
+        {
+            EventId = logMsg.EventId.Id.ToString(),
+            LogName = logMsg.LogName,
+            LogLevel = logMsg.LogLevel.ToString(),
+            Message = logMsg.Message,
+            Exception = logMsg.Exception?.ToString(),
+            State = logMsg.State.ToString(),
+            LogDateTime = logMsg.LogDateTime,
+            ThreadId = logMsg.ThreadId,
+            UseUtcTimestamp = logMsg.UseUtcTimestamp,
+            TraceId = logMsg.TraceId,
+            Monitor = logMsg.Context?.Get("loggingMonitor")?.ToString(),
+        };
+        _esClient.IndexDocument(document);
     }
 }