我使用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
中的elasticsearch设置:
"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。
2条答案
按热度按时间8wigbo561#
这个问题是因为当前版本的
Serilog.Sinks.Elasticsearch
serilog sink不支持elasticsearch版本8.*.默认情况下,所以你需要更多的配置。我最近遇到了这个问题,并写了一篇关于它的文章。我建议你阅读这篇文章并解决你的问题。
尝试以下配置:
文章链接:How to integrate Serilog with Elasticsearch 8 + Kibana
u4vypkhs2#
9.0版中的
Serilog.Sinks.Elasticsearch
支持elasticsearch版本8.*
在官方网站上建议使用
Elastic.Serilog.Sinks
包用于ecs >= 8.x`serilog-data-shipper中的更多信息
与Serilog.Sinks.Elasticsearch的对比
8.0
兼容。Serilog.Sinks.Elasticsearch
由Elastic非正式支持,一些.NET团队帮助维护它。Elastic.Serilog.Sinks
由Elastic正式支持,并专门构建以遵守有关日志记录,数据流和ILM的最新最佳实践。Elastic.Serilog.Sinks
的配置选项比Serilog.Sinks.Elasticsearch
更少,并且更具规范性。Elastic.Serilog.Sinks
中没有足够的配置挂钩