using System.Configuration; using Kreta.Core.MessageBroker.Logging.Serilog.Configuration; namespace Kreta.MessageBroker.Configuration { /// <summary> /// Serilog - Elastic search konfiguráció /// </summary> public class SerilogConfigurationElement : ConfigurationElement, ISerilogConfiguration { #region [Properties] /// <summary> /// Lossy buffer count /// </summary> [ConfigurationProperty(nameof(LossyBufferSize), IsRequired = true)] public int LossyBufferSize { get { return (int)base[nameof(LossyBufferSize)]; } } /// <summary> /// Serilog loggers /// </summary> [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] /// <summary> /// Custom validations /// </summary> 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 } }