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