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