using System.Configuration; using Kreta.Core.MessageBroker.Logging.Serilog.Configuration; namespace Kreta.MessageBroker.Configuration { /// /// Serilog - Elastic search konfiguráció /// public class SerilogConfigurationElement : ConfigurationElement, ISerilogConfiguration { #region [Properties] /// /// Lossy buffer count /// [ConfigurationProperty(nameof(LossyBufferSize), IsRequired = true)] public int LossyBufferSize { get { return (int)base[nameof(LossyBufferSize)]; } } /// /// Serilog loggers /// [ConfigurationProperty(nameof(ElasticSearch), IsRequired = false)] public ElasticSearchConfigurationElement ElasticSearch { get { return (ElasticSearchConfigurationElement)base[nameof(ElasticSearch)]; } } IElasticSearchConfiguration ISerilogConfiguration.ElasticSearch { get { return this.ElasticSearch; } } #endregion #region [Protected methods] /// /// Custom validations /// protected override void PostDeserialize() { if (!this.ElasticSearch.ElementInformation.IsPresent) { throw new ConfigurationErrorsException($"At least one logger sink must be defined. (e.g:{nameof(ElasticSearch)})"); } } #endregion } }