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; }
}