using System.Configuration;
using Kreta.Core.MessageBroker.Logging.Serilog.Configuration;
using Serilog.Events;
using Serilog.Sinks.Elasticsearch;
namespace Kreta.MessageBroker.Configuration
{
///
/// Elastic search configuration element
///
public class ElasticSearchConfigurationElement : ConfigurationElement, IElasticSearchConfiguration
{
#region [Properties]
///
/// Use custom back-off logic
///
[ConfigurationProperty(nameof(UseCustomBackOffLogic), IsRequired = true)]
public bool UseCustomBackOffLogic
{
get
{
return (bool)base[nameof(UseCustomBackOffLogic)];
}
}
///
/// URI - s to send log
///
[ConfigurationProperty(nameof(NodeUris), IsRequired = true)]
public string NodeUris
{
get
{
return (string)base[nameof(NodeUris)];
}
}
///
/// Elastic search index format
///
[ConfigurationProperty(nameof(IndexFormat), IsRequired = true)]
public string IndexFormat
{
get
{
return (string)base[nameof(IndexFormat)];
}
}
///
/// Minimum log event level
///
[ConfigurationProperty(nameof(MinimumLogEventLevel), IsRequired = false, DefaultValue = LogEventLevel.Information)]
public LogEventLevel MinimumLogEventLevel
{
get
{
return (LogEventLevel)base[nameof(MinimumLogEventLevel)];
}
}
///
/// The connection timeout when sending bulk operations to elasticsearch in seconds
///
[ConfigurationProperty(nameof(ConnectionTimeoutInSeconds), IsRequired = false)]
public int? ConnectionTimeoutInSeconds
{
get
{
return (int?)base[nameof(ConnectionTimeoutInSeconds)];
}
}
///
/// Seconds wait between checking event batches
///
[ConfigurationProperty(nameof(WaitBetweenForCheckingEventBatchesInSeconds), IsRequired = false)]
public int? WaitBetweenForCheckingEventBatchesInSeconds
{
get
{
return (int?)base[nameof(WaitBetweenForCheckingEventBatchesInSeconds)];
}
}
///
/// The maximum number of events to post in a single batch.
///
[ConfigurationProperty(nameof(BatchPostingLimit), IsRequired = false)]
public int? BatchPostingLimit
{
get
{
return (int?)base[nameof(BatchPostingLimit)];
}
}
///
/// Auto register template version
///
[ConfigurationProperty(nameof(AutoRegisterTemplateVersion), IsRequired = false)]
public AutoRegisterTemplateVersion? AutoRegisterTemplateVersion
{
get
{
return (AutoRegisterTemplateVersion?)base[nameof(AutoRegisterTemplateVersion)];
}
}
#endregion
}
}