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;
}