Serilog 不将日志发送到 Elasticsearch 8

Moh*_*ati 3 c# elasticsearch serilog asp.net-core

我使用ELK堆栈来记录应用程序错误,但Serilog不会记录到elasticsearch

\n

使用的elasticsearch版本是8.3.2

\n

日志配置program.cs

\n
builder.UseSerilog((hostBuilder, serviceProvider, loggerConfiguration) =>\n{\n    var appSettings = hostBuilder.Configuration.GetSection(nameof(AppSettings)).Get<AppSettings>();\n\n    CreateBasicLoggerConfiguration(loggerConfiguration)\n        .WriteTo.File(logPath, rollingInterval: RollingInterval.Hour)\n        .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(appSettings.ElasticsearchSettings.Uri))\n        {\n            IndexFormat = $"\xd9\x8eapp-logs-{environment.EnvironmentName.Replace(".","-")}-{DateTimeOffset.Now.LocalDateTime:yyyy-MM}",\n            AutoRegisterTemplate = true\n        });\n});\n
Run Code Online (Sandbox Code Playgroud)\n

并且,elasticsearch设置为appsettings.json

\n
"ElasticsearchSettings": {\n  "Uri" : "http://localhost:9200"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

添加并使用了以下软件包:

\n
<PackageReference Include="Serilog.AspNetCore" Version="5.0.0" />\n<PackageReference Include="Serilog.Enrichers.ClientInfo" Version="1.1.4" />\n<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />\n<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="8.4.1" />\n
Run Code Online (Sandbox Code Playgroud)\n

一切看起来都正常,但是没有登录到elastichsearch。

\n

Mil*_*ard 10

这个问题是因为当前版本的Serilog.Sinks.Elasticsearchserilog接收器不支持elasticsearch版本8.*。

\n

默认情况下,所以你需要一些更多的配置。我最近遇到了这个问题并写了一篇关于它的文章。我建议您阅读该文章并解决您的问题。

\n

尝试以下配置:

\n
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(appSettings.ElasticsearchSettings.Uri))\n{\n      IndexFormat = $"\xd9\x8eapp-logs-{environment.EnvironmentName.Replace(".","-")}-{DateTimeOffset.Now.LocalDateTime:yyyy-MM}",\n      AutoRegisterTemplate = true,\n      OverwriteTemplate = true,\n      TemplateName = yourTemplateName,\n      AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,\n      TypeName = null,\n      BatchAction = ElasticOpType.Create\n});\n
Run Code Online (Sandbox Code Playgroud)\n

文章链接如何将 Serilog 与 Elasticsearch 8 + Kibana 集成

\n