Elastic.Serilog.Sinks
编辑Elastic.Serilog.Sinks编辑
一个 Serilog 接收器,它将日志直接写入 Elasticsearch 或 Elastic Cloud
安装编辑
添加对 Elastic.Serilog.Sinks
包的引用
<PackageReference Include="Elastic.Serilog.Sinks" Version="8.6.0" />
使用编辑
您可以通过几种方式扩展 Serilog
LoggerConfiguration
Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .Enrich.FromLogContext()
注意: 别忘了我们还发布了用于 Elastic APM Agent 的 Elastic.Apm.SerilogEnricher
!
写入 Elasticsearch
.WriteTo.Elasticsearch(new [] { new Uri("https://127.0.0.1:9200" )}, opts => { opts.DataStream = new DataStreamName("logs", "console-example", "demo"); opts.BootstrapMethod = BootstrapMethod.Failure; opts.ConfigureChannel = channelOpts => { channelOpts.BufferOptions = new BufferOptions { ConcurrentConsumers = 10 }; }; })
写入 Elastic Cloud
.WriteTo.ElasticCloud("cloudId", "cloudUser", "cloudPass", opts =>
opts
是 ElasticsearchSinkOptions
的实例,具有以下选项
配置编辑
选项 | 描述 |
---|---|
|
|
|
写入数据的位置,默认为 |
|
接收器是否应尝试安装组件和索引模板以确保数据流具有 ECS 映射。可以是 |
|
允许显式控制用于发出 ECS json 文档的 |
|
接收 |
请注意,您也可以直接传递 ElasticsearchSinkOptions
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(client.Transport))
这使您可以例如重用 Elasticsearch 客户端使用的 Transport
。
ECS 感知的消息模板编辑
此接收器通过其格式器允许您使用符合 https://messagetemplates.org/ 格式的属性直接从消息模板设置 ECS 字段。
可用的 ECS 消息模板属性列在 LogTemplateProperties.*
下,例如 LogTemplateProperties.TraceId
Log.Information("The time is {TraceId}", "my-trace-id");
将覆盖生成的 ECS json 文档上的 trace.id
。
-
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
中没有大量配置钩子
值得注意的缺失功能:编辑
-
Elastic.Serilog.Sinks
仅适用于Elasticsearch 8.x
及更高版本。 - 这是因为启动(
BootstrapMethod
)尝试加载为 Elasticsearch 8.0 及更高版本构建的模板。 -
Elastic.Serilog.Sinks
只有一种方法可以将数据发送到 Elasticsearch,以确认 ecs-logging 规范 - 但这并不意味着您不能引入自己的其他属性。
-
Elastic.Serilog.Sinks
没有持久模式。 - 如果您需要更高的日志传递保证,请使用
Serilog.Sinks.File
以及我们的 ECS 日志格式器 for Serilog,并使用 filebeat 来发送这些日志。 - 查看 {fleet-ref}/fleet-overview.html[Elastic Agent 和 Fleet] 以简化边缘日志和指标的收集。
如果您在 Elastic.Serilog.Sinks
中错过了 Serilog.Sinks.Elasticsearch
中的特定功能,请打开一个 功能请求!我们希望这个接收器在未来能够有机地发展。