using Microsoft.Extensions.Logging; using Nest; using LogLevel = Microsoft.Extensions.Logging.LogLevel; namespace Admin.NET.Core; /// /// ES日志写入器 /// public class ElasticSearchLoggingWriter : IDatabaseLoggingWriter { private readonly ElasticClient _esClient; public ElasticSearchLoggingWriter(ElasticClient esClient) { _esClient = esClient; } public void Write(LogMessage logMsg, bool flush) { _esClient.IndexDocument(new LogContent { Time = DateTime.Now, LogLevel = logMsg.LogLevel, LogName = logMsg.LogName, EventId = logMsg.EventId, Message = logMsg.Message, Exception = logMsg.Exception }); } } /// /// 日志内容 /// public class LogContent { /// /// 记录器类别名称 /// public string LogName { get; set; } /// /// 日志级别 /// public LogLevel LogLevel { get; set; } /// /// 事件 Id /// public EventId EventId { get; set; } /// /// 异常对象 /// public Exception Exception { get; set; } /// /// 日志上下文 /// public LogContext Context { get; set; } /// /// 日志消息 /// public string Message { get; internal set; } /// /// 日志时间 /// public DateTime Time { get; internal set; } }