Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El enriquecidor de registros de aplicaciones aumenta los registros de telemetría con información específica de la aplicación, como los detalles del host de servicio y los metadatos de la aplicación. Este enriquecidor proporciona un contexto esencial sobre el entorno de implementación de la aplicación, la información de versión y la identidad de servicio que ayuda con la supervisión, depuración y visibilidad operativa.
Puede registrar los enriquecedores en un contenedor de IoC y todos los enriquecedores registrados son detectados automáticamente por los registros de telemetría respectivos, donde enriquecen la información de telemetría.
Prerrequisitos
Para funcionar correctamente, este enriquecidor requiere que los metadatos de la aplicación estén configurados y disponibles. Los metadatos de la aplicación proporcionan la información fundamental que usa el enriquecidor para rellenar las dimensiones de telemetría.
Instalar el paquete
Para empezar, instale el 📦 paquete NuGet Microsoft.Extensions.Telemetry :
dotnet add package Microsoft.Extensions.Telemetry
O bien, si usa el SDK de .NET 10+:
dotnet package add Microsoft.Extensions.Telemetry
Configuración paso a paso
Siga estos pasos para configurar el enriquecidor de registros de aplicaciones en la aplicación:
1. Configurar metadatos de la aplicación
En primer lugar, configure los metadatos de la aplicación llamando a los UseApplicationMetadata métodos:
var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata()
Este método recoge automáticamente los valores de IHostEnvironment y los guarda en la sección ambientmetadata:applicationde configuración predeterminada .
Como alternativa, puede usar el método AddApplicationMetadata(IConfigurationBuilder, IHostEnvironment, String), que registra un proveedor de configuración para los metadatos de la aplicación tomando los valores de IHostEnvironment y agregándolos al nombre de la sección de configuración dada. A continuación, use el AddApplicationMetadata(IServiceCollection, IConfigurationSection) método para registrar los metadatos en el contenedor de inserción de dependencias, lo que le permite pasar IConfigurationSection por separado:
var builder = Host.CreateApplicationBuilder(args)
.ConfigureAppConfiguration(static (context, builder) =>
builder.AddApplicationMetadata(context.HostingEnvironment));
builder.Services.AddApplicationMetadata(
builder.Configuration.GetSection("ambientmetadata:application")));
2. Proporcionar configuración adicional (opcional)
Puede proporcionar una configuración adicional a través de appsettings.json. Hay dos propiedades en los metadatos de la aplicación que no obtienen valores automáticamente: BuildVersion y DeploymentRing. Si quiere usarlos, proporcione los valores manualmente:
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
},
3. Registrar el enriquecidor del registro de aplicaciones
Registre el enriquecedor de registros en el contenedor de inserción de dependencias llamando al método AddApplicationLogEnricher(IServiceCollection).
serviceCollection.AddApplicationLogEnricher();
Puede habilitar o deshabilitar opciones individuales del enriquecidor:
serviceCollection.AddApplicationLogEnricher(options =>
{
options.BuildVersion = true;
options.DeploymentRing = true;
});
Nota:
Si usa .NET 9 o una versión anterior, llame al AddServiceLogEnricher(IServiceCollection) método en su lugar.
Como alternativa, configure las opciones mediante appsettings.json:
"ApplicationLogEnricherOptions": {
"BuildVersion": true,
"DeploymentRing": true
}
A continuación, aplique la configuración.
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddApplicationLogEnricher(builder.Configuration.GetSection("ApplicationLogEnricherOptions"));
Opciones de configuración de ApplicationLogEnricherOptions
El enriquecidor de registros de aplicaciones admite varias opciones de configuración a través de la ApplicationLogEnricherOptions clase :
| Propiedad | Valor predeterminado | Nombre de dimensión | Description |
|---|---|---|---|
EnvironmentName |
true | deployment.environment |
Nombre del entorno proveniente del entorno de hospedaje o de la configuración |
ApplicationName |
true | service.name |
Nombre de la aplicación del entorno de hospedaje o configuración |
BuildVersion |
false | service.version |
Versión de compilación a partir de la configuración |
DeploymentRing |
false | DeploymentRing |
Anillo de implementación desde la configuración |
De forma predeterminada, el enriquecidor incluye EnvironmentName y ApplicationName en entradas de registro. Las BuildVersion propiedades y DeploymentRing están deshabilitadas de forma predeterminada y deben habilitarse explícitamente si es necesario.
Ejemplo completo
Este es un ejemplo completo que muestra cómo configurar el enriquecidor de registros de aplicaciones:
appsettings.json:
{
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
},
"ApplicationLogEnricherOptions": {
"BuildVersion": true,
"DeploymentRing": true
}
}
Program.cs:
using System.Text.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata();
builder.Logging.EnableEnrichment();
builder.Logging.AddJsonConsole(op =>
{
op.JsonWriterOptions = new JsonWriterOptions
{
Indented = true
};
});
builder.Services.AddApplicationLogEnricher(builder.Configuration.GetSection("ApplicationLogEnricherOptions"));
var host = builder.Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("This is a sample log message");
await host.RunAsync();
Salida de registro enriquecida
Con el enriquecidor de registros de aplicaciones configurado, la salida del registro incluye dimensiones específicas del servicio:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Program",
"Message": "This is a sample log message",
"State": {
"Message": "This is a sample log message",
"service.name": "servicelogenricher",
"deployment.environment": "Production",
"DeploymentRing": "testring",
"service.version": "1.2.3",
"{OriginalFormat}": "This is a sample log message"
}
}
Pasos siguientes
- Más información sobre la configuración de metadatos de la aplicación