Options
El patrón de opciones es una técnica común en aplicaciones .NET que permite centralizar la configuración en un solo lugar, facilitando la gestión y validación de las opciones de configuración. La clase LoggerOptions
proporciona las opciones de configuración para el sistema de logging, permitiendo personalizar el comportamiento de la librería.
LoggerOptions
La clase LoggerOptions
proporciona un conjunto de opciones que pueden configurarse en el archivo appsettings.json
de tu aplicación. Estas opciones son esenciales para definir el comportamiento y la configuración del sistema de logging, como si el logging está habilitado, el endpoint de OpenTelemetry, etc.
namespace CodeDesignPlus.Net.Logger.Options;
/// <summary>/// Options for configuring the logger./// </summary>public class LoggerOptions : IValidatableObject{ /// <summary> /// The name of the section used in the appsettings. /// </summary> public const string Section = "Logger";
/// <summary> /// Gets or sets a value indicating whether logging is enabled. /// </summary> public bool Enable { get; set; }
/// <summary> /// Gets or sets the OpenTelemetry endpoint. /// </summary> [Url] public string OTelEndpoint { get; set; }
/// <summary> /// Validates the properties of the LoggerOptions. /// </summary> /// <param name="validationContext">The context information about the validation operation.</param> /// <returns>A collection of validation results.</returns> public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var results = new List<ValidationResult>();
if (Enable) Validator.TryValidateProperty(OTelEndpoint, new ValidationContext(this) { MemberName = nameof(OTelEndpoint) }, results);
return results; }}
Propiedades
-
Enable
- Tipo:
bool
- Descripción: Indica si el logging está habilitado. Cuando es
true
, los logs se envían al endpoint de OpenTelemetry configurado. - Valor Predeterminado:
false
(por defecto al inicializar la clase, si no se establece lo contrario).
- Tipo:
-
OTelEndpoint
- Tipo:
string
- Descripción: La URL del endpoint de OpenTelemetry al que se enviarán los logs.
- Valor Predeterminado:
null
(por defecto al inicializar la clase, si no se establece lo contrario). - Validación: Debe ser una URL válida si el logging está habilitado (
Enable
estrue
). Se valida utilizando el atributo[Url]
.
- Tipo:
Validación
La clase LoggerOptions
implementa IValidatableObject
para realizar validaciones adicionales al inicializar las opciones. En particular, se asegura de que OTelEndpoint
sea una URL válida cuando Enable
es true
.
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext){ var results = new List<ValidationResult>();
if (Enable) Validator.TryValidateProperty(OTelEndpoint, new ValidationContext(this) { MemberName = nameof(OTelEndpoint) }, results);
return results;}
Ejemplo de Configuración
A continuación se muestra un ejemplo de archivo appsettings.json
que configura las opciones de logging:
{ "Core": { "Business": "CodeDesignPlus", "AppName": "sample-logger", "Version": "v1", "Description": "Sample of CodeDesignPlus.Net.Core", "Contact": { "Name": "CodeDesignPlus", "Email": "custom@outlook.com" } }, "Logger": { "Enable": true, "OTelEndpoint": "http://localhost:4317" }}