Skip to content

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).
  • 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 es true). Se valida utilizando el atributo [Url].

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

Referencias Adicionales