ElasticSearchLoggingWriter.cs 1023 B

1234567891011121314151617181920212223242526272829303132333435
  1. using Nest;
  2. namespace Admin.NET.Core;
  3. /// <summary>
  4. /// ES日志写入器
  5. /// </summary>
  6. public class ElasticSearchLoggingWriter : IDatabaseLoggingWriter
  7. {
  8. private readonly ElasticClient _esClient;
  9. public ElasticSearchLoggingWriter(ElasticClient esClient)
  10. {
  11. _esClient = esClient;
  12. }
  13. public void Write(LogMessage logMsg, bool flush)
  14. {
  15. var document = new ElasticSearchLogMessage
  16. {
  17. EventId = logMsg.EventId.Id.ToString(),
  18. LogName = logMsg.LogName,
  19. LogLevel = logMsg.LogLevel.ToString(),
  20. Message = logMsg.Message,
  21. Exception = logMsg.Exception?.ToString(),
  22. State = logMsg.State.ToString(),
  23. LogDateTime = logMsg.LogDateTime,
  24. ThreadId = logMsg.ThreadId,
  25. UseUtcTimestamp = logMsg.UseUtcTimestamp,
  26. TraceId = logMsg.TraceId,
  27. Monitor = logMsg.Context?.Get("loggingMonitor")?.ToString(),
  28. };
  29. _esClient.IndexDocument(document);
  30. }
  31. }