Elastic.Serilog.Sinks编辑

一个 Serilog 接收器,它将日志直接写入 ElasticsearchElastic 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 =>

optsElasticsearchSinkOptions 的实例,具有以下选项

配置编辑

选项 描述

传输

Elastic.Transport 的实例,指示我们与哪里以及如何通信。默认为 https://127.0.0.1:9200

数据流

写入数据的位置,默认为 logs-dotnet-default 数据流。

启动方法

接收器是否应尝试安装组件和索引模板以确保数据流具有 ECS 映射。可以是 None(默认值)、Silent(尝试但静默失败)或 Failure(尝试,如果启动失败则抛出异常)。

文本格式

允许显式控制用于发出 ECS json 文档的 EcsTextFormatterConfiguration。有关可用选项,请参阅 Elastic.CommonSchema.Serilog

配置通道

接收 DatastreamChannelOptions 的回调,允许您控制大小、背压等。有关更多信息,请参阅 Elastic.Ingest.Elasticsearch

请注意,您也可以直接传递 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 中的特定功能,请打开一个 功能请求!我们希望这个接收器在未来能够有机地发展。