[英]Serilog does not send logs to Elasticsearch 8
我使用ELK堆栈记录应用程序错误,但Serilog不记录到elasticsearch 。
使用的 elasticsearch 版本是8.3.2 。
program.cs
中的日志配置:
builder.UseSerilog((hostBuilder, serviceProvider, loggerConfiguration) =>
{
var appSettings = hostBuilder.Configuration.GetSection(nameof(AppSettings)).Get<AppSettings>();
CreateBasicLoggerConfiguration(loggerConfiguration)
.WriteTo.File(logPath, rollingInterval: RollingInterval.Hour)
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(appSettings.ElasticsearchSettings.Uri))
{
IndexFormat = $"َapp-logs-{environment.EnvironmentName.Replace(".","-")}-{DateTimeOffset.Now.LocalDateTime:yyyy-MM}",
AutoRegisterTemplate = true
});
});
而且, appsettings.json中的appsettings.json
设置:
"ElasticsearchSettings": {
"Uri" : "http://localhost:9200"
}
添加并使用了以下软件包:
<PackageReference Include="Serilog.AspNetCore" Version="5.0.0" />
<PackageReference Include="Serilog.Enrichers.ClientInfo" Version="1.1.4" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="8.4.1" />
一切看起来都不错,但在 elastichsearch 中没有登录。
这个问题是因为当前版本的Serilog.Sinks.Elasticsearch
serilog sink 不支持 elasticsearch版本 8.*。
默认情况下,因此您需要更多配置。 我最近遇到了这个问题并写了一篇关于它的文章。 我建议阅读该文章并解决您的问题。
尝试以下配置:
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(appSettings.ElasticsearchSettings.Uri))
{
IndexFormat = $"َapp-logs-{environment.EnvironmentName.Replace(".","-")}-{DateTimeOffset.Now.LocalDateTime:yyyy-MM}",
AutoRegisterTemplate = true,
OverwriteTemplate = true,
TemplateName = yourTemplateName,
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
TypeName = null,
BatchAction = ElasticOpType.Create
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.