private static ElasticsearchSinkOptions CreateSinkOptions()

in src/Elastic.Serilog.Sinks/ConfigSinkExtensions.cs [153:188]


		private static ElasticsearchSinkOptions CreateSinkOptions(
			TransportConfigurationDescriptor transportConfig,
			BootstrapMethod bootstrapMethod, string? dataStream, string? ilmPolicy, bool? includeHost,
			bool? includeActivity, bool? includeProcess, bool? includeUser, ICollection<string>? filterProperties
		)
		{
			var sinkOptions = new ElasticsearchSinkOptions(new DistributedTransport(transportConfig));
			if (dataStream != null)
			{
				var tokens = dataStream.Split('-');
				if (tokens.Length > 3)
					throw new ArgumentOutOfRangeException(nameof(dataStream), $"Data stream name should be at most 3 tokens: {dataStream}");
				if (tokens.Length == 3)
					sinkOptions.DataStream = new DataStreamName(tokens[0], tokens[1], tokens[2]);
				if (tokens.Length == 2)
					sinkOptions.DataStream = new DataStreamName(tokens[0], tokens[1]);
				if (tokens.Length == 1)
					sinkOptions.DataStream = new DataStreamName(tokens[0]);
			}
			sinkOptions.BootstrapMethod = bootstrapMethod;

			if (ilmPolicy != null)
				sinkOptions.IlmPolicy = ilmPolicy;

			if (includeHost.HasValue)
				sinkOptions.TextFormatting.IncludeHost = includeHost.Value;
			if (includeProcess.HasValue)
				sinkOptions.TextFormatting.IncludeProcess = includeProcess.Value;
			if (includeActivity.HasValue)
				sinkOptions.TextFormatting.IncludeActivityData = includeActivity.Value;
			if (includeUser.HasValue)
				sinkOptions.TextFormatting.IncludeUser = includeUser.Value;
			if (filterProperties != null)
				sinkOptions.TextFormatting.LogEventPropertiesToFilter = new HashSet<string>(filterProperties);
			return sinkOptions;
		}