Serilog不向Elasticsearch 8发送日志

rsaldnfx  于 2023-10-17  发布在  ElasticSearch
关注(0)|答案(2)|浏览(139)

我使用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。

8wigbo56

8wigbo561#

这个问题是因为当前版本的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
});

文章链接How to integrate Serilog with Elasticsearch 8 + Kibana

u4vypkhs

u4vypkhs2#

9.0版中的Serilog.Sinks.Elasticsearch支持elasticsearch版本8.*
在官方网站上建议使用Elastic.Serilog.Sinks包用于ecs >= 8.x`
serilog-data-shipper中的更多信息

与Serilog.Sinks.Elasticsearch的对比

  • Serilog.Sinks.Elasticsearch是一个令人惊叹的社区主导的接收器,有大量的选项,可以与旧的Elasticsearch版本<8.0兼容。
  • Serilog.Sinks.Elasticsearch由Elastic非正式支持,一些.NET团队帮助维护它。
  • Elastic.Serilog.Sinks由Elastic正式支持,并专门构建以遵守有关日志记录,数据流和ILM的最新最佳实践。
  • Elastic.Serilog.Sinks的配置选项比Serilog.Sinks.Elasticsearch更少,并且更具规范性。
  • 这并不是说Elastic.Serilog.Sinks中没有足够的配置挂钩

相关问题