kreta/Kreta.MessageBroker/Configuration/SerilogConfigurationElement.cs
2024-03-13 00:33:46 +01:00

62 lines
1.6 KiB
C#

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