Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Las bibliotecas cliente de Azure SDK para .NET incluyen la posibilidad de registrar operaciones de la biblioteca cliente. Este inicio de sesión te permite supervisar las solicitudes de E/S y las respuestas que las bibliotecas cliente realizan en los servicios de Azure. Normalmente, los registros se usan para depurar o diagnosticar problemas de comunicación. En este artículo se describen los siguientes métodos para habilitar el registro con Azure SDK para .NET:
Importante
Este artículo se aplica a las bibliotecas cliente que usan las versiones más recientes de Azure SDK para .NET. Para ver si se admite una biblioteca, consulte la lista de versiones más recientes del SDK de Azure. Si la aplicación usa una versión anterior de una biblioteca cliente de Azure SDK, consulte instrucciones específicas en la documentación del servicio aplicable.
El SDK registra la siguiente información, depurando los valores de encabezado y consulta de los parámetros para quitar datos personales.
Entrada del registro de solicitudes HTTP:
Entrada del registro de respuestas HTTP:
Contenido de solicitud y respuesta HTTP:
Flujo de contenido como texto o bytes dependiendo de la cabecera Content-Type
.
Nota
El registro de contenido está deshabilitado de manera predeterminada. Para habilitarlo, consulte Registro de cuerpos de solicitud y respuesta HTTP. Esta funcionalidad solo se aplica a las bibliotecas que usan HTTP para comunicarse con un servicio de Azure. Las bibliotecas basadas en protocolos alternativos, como AMQP, no admiten el registro de contenido. Entre los ejemplos no admitidos se incluyen bibliotecas para servicios de Azure, como Event Hubs, Service Bus y Web PubSub.
Los registros de eventos se generan normalmente en uno de estos tres niveles:
Las bibliotecas cliente de Azure SDK para .NET registran eventos en Seguimiento de eventos para Windows (ETW) mediante la clase System.Diagnostics.Tracing.EventSource, que es habitual para .NET. Los orígenes de eventos permiten usar el registro estructurado en la aplicación con una sobrecarga de rendimiento mínima. Para obtener acceso a los registros de eventos, debes registrar agentes de escucha de eventos.
El SDK incluye la clase Azure.Core.Diagnostics.AzureEventSourceListener, que contiene dos métodos estáticos que simplifican el registro completo de la aplicación .NET: CreateConsoleLogger
y CreateTraceLogger
. Cada uno de estos métodos acepta un parámetro opcional que especifica un nivel de registro. Si no se proporciona el parámetro, se usa el nivel de registro predeterminado de Informational
.
Un principio básico de las bibliotecas cliente de Azure SDK para .NET es simplificar la capacidad de ver registros completos en tiempo real. El método CreateConsoleLogger
permite enviar registros a la ventana de la consola con una sola línea de código:
using AzureEventSourceListener listener =
AzureEventSourceListener.CreateConsoleLogger();
Si implementa agentes de escucha de seguimiento, puede usar el método CreateTraceLogger
para registrarse en el mecanismo de seguimiento de eventos estándar de .NET (System.Diagnostics.Tracing). Para obtener más información sobre el seguimiento de eventos en .NET, vea Agentes de escucha de seguimiento.
En este ejemplo se especifica un nivel de registro detallado:
using AzureEventSourceListener listener =
AzureEventSourceListener.CreateTraceLogger(EventLevel.Verbose);
Como se mencionó anteriormente, debe registrar los agentes de escucha de eventos para recibir mensajes de registro de Azure SDK para .NET. Si no quiere implementar un registro completo con uno de los métodos simplificados anteriores, puede construir una instancia de la clase AzureEventSourceListener
. Pase a esa instancia un método de devolución de llamada que tú mismo escribas. Este método recibirá mensajes de registro que se pueden procesar en caso que sea necesario. Además, cuando se crea la instancia, se pueden especificar los niveles de registro que se van a incluir.
En el ejemplo siguiente, se crea un agente de escucha de eventos que se registra en la consola con un mensaje personalizado. Los registros se filtran por esos eventos emitidos desde la biblioteca cliente de Azure Core con un nivel de detalle. La biblioteca de Azure Core usa un nombre de origen de eventos de Azure-Core
.
using Azure.Core.Diagnostics;
using System.Diagnostics.Tracing;
// code omitted for brevity
using var listener = new AzureEventSourceListener((e, message) =>
{
// Only log messages from "Azure-Core" event source
if (e.EventSource.Name == "Azure-Core")
{
Console.WriteLine($"{DateTime.Now} {message}");
}
},
level: EventLevel.Verbose);
El servicio AzureEventSourceLogForwarder permite usar la configuración de registro de ASP.NET Core estándar para el registro. El servicio reenvía mensajes de registro de orígenes de eventos del SDK de Azure a ILoggerFactory.
En la tabla siguiente se muestra cómo se asigna el elemento EventLevel
del SDK de Azure para .NET al elemento LogLevel
de ASP.NET Core.
EventLevel de SDK de Azure |
LogLevel de ASP.NET Core |
---|---|
Critical |
Critical |
Error |
Error |
Informational |
Information |
Warning |
Warning |
Verbose |
Debug |
LogAlways |
Information |
Con la biblioteca de Azure Service Bus como ejemplo, complete los pasos siguientes:
Instale el paquete NuGet Microsoft.Extensions.Azure:
dotnet add package Microsoft.Extensions.Azure
En Program.cs, registre el cliente de la biblioteca del SDK de Azure mediante una llamada al método de extensión AddAzureClients:
using Azure.Identity;
using Microsoft.Extensions.Azure;
// code omitted for brevity
builder.Services.AddAzureClients(azureBuilder =>
{
azureBuilder.AddServiceBusClient(
builder.Configuration.GetConnectionString("ServiceBus"));
azureBuilder.UseCredential(new DefaultAzureCredential());
});
En el ejemplo anterior, el método AddAzureClients
:
En appsettings.json, cambie el nivel de registro predeterminado de la biblioteca de Service Bus. Por ejemplo, alterne a Debug
estableciendo la clave Logging:LogLevel:Azure.Messaging.ServiceBus
, tal como se muestra a continuación:
{
"ConnectionStrings": {
"ServiceBus": "<connection_string>"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Azure.Messaging.ServiceBus": "Debug"
}
},
"AllowedHosts": "*"
}
Puesto que la clave Logging:LogLevel:Azure.Messaging.ServiceBus
está establecida en Debug
, los eventos de cliente de Service Bus hasta EventLevel.Verbose
se registrarán.
Hay escenarios en los que registrar el cliente de una biblioteca de Azure SDK con el contenedor de inserción de dependencias es imposible o innecesario:
IServiceCollection
para registrar un cliente en el contenedor de inserción de dependencias.En estos escenarios, complete los pasos siguientes:
Instale el paquete NuGet Microsoft.Extensions.Azure:
dotnet add package Microsoft.Extensions.Azure
En Program.cs, registre el servicio de reenvío de registros como singleton en el contenedor de inserción de dependencias:
using Azure.Identity;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Azure;
using Microsoft.Extensions.DependencyInjection.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.TryAddSingleton<AzureEventSourceLogForwarder>();
builder.Services.AddDataProtection()
.PersistKeysToAzureBlobStorage("<connection_string>", "<container_name>", "keys.xml")
.ProtectKeysWithAzureKeyVault(new Uri("<uri>"), new DefaultAzureCredential());
Capture el servicio de reenviador de registros del contenedor de inserción de dependencias e invoque su método Start. Por ejemplo, mediante la inserción de constructores en una clase de modelo de página de Razor Pages de ASP.NET Core:
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Azure;
public class IndexModel : PageModel
{
public IndexModel(AzureEventSourceLogForwarder logForwarder) =>
logForwarder.Start();
En appsettings.json, cambie el nivel de registro predeterminado de la biblioteca de Azure Core. Por ejemplo, alterne a Debug
estableciendo la clave Logging:LogLevel:Azure.Core
, tal como se muestra a continuación:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Azure.Core": "Debug"
}
},
"AllowedHosts": "*"
}
Puesto que la clave Logging:LogLevel:Azure.Core
está establecida en Debug
, los eventos de la biblioteca de Azure Core hasta EventLevel.Verbose
se registrarán.
Para obtener más información, vea Registro en .NET Core y ASP.NET Core.
La Distribución de OpenTelemetry de Azure Monitor, a partir de la versión 1.2.0
, admite la captura de registros procedentes de bibliotecas cliente de Azure. Puede controlar el registro mediante cualquiera de las opciones de configuración descritas en Registro en .NET Core y ASP.NET Core.
Con la biblioteca de Azure Service Bus como ejemplo, complete los pasos siguientes:
Instale el paquete NuGet Azure.Monitor.OpenTelemetry.AspNetCore:
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
Cree o registre el cliente de la biblioteca. La distribución admite ambos casos.
await using var client = new ServiceBusClient("<connection_string>");
En appsettings.json, cambie el nivel de registro predeterminado de la biblioteca de Service Bus. Por ejemplo, alterne a Debug
estableciendo la clave Logging:LogLevel:Azure.Messaging.ServiceBus
, tal como se muestra a continuación:
{
"ConnectionStrings": {
"ServiceBus": "<connection_string>"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Azure.Messaging.ServiceBus": "Debug"
}
},
"AllowedHosts": "*"
}
Puesto que la clave Logging:LogLevel:Azure.Messaging.ServiceBus
está establecida en Debug
, los eventos de cliente de Service Bus hasta EventLevel.Verbose
se registrarán.
Nota
Esta funcionalidad solo se aplica a las bibliotecas que usan HTTP para comunicarse con un servicio de Azure. Las bibliotecas basadas en protocolos alternativos, como AMQP, no admiten el registro de contenido. Entre los ejemplos no admitidos se incluyen bibliotecas para servicios de Azure, como Event Hubs, Service Bus y Web PubSub.
Al solucionar problemas de comportamiento inesperado con una biblioteca cliente, resulta útil inspeccionar los siguientes elementos:
De forma predeterminada, el registro del contenido anteriormente mencionado está deshabilitado. Para habilitar el registro de los cuerpos de solicitud y respuesta HTTP, siga estos pasos:
Establezca la propiedad IsLoggingContentEnabled del objeto de opciones de cliente en true
y pase el objeto options al constructor del cliente. Por ejemplo, para registrar solicitudes HTTP y respuestas para la biblioteca de secretos de Azure Key Vault:
var clientOptions = new SecretClientOptions
{
Diagnostics =
{
IsLoggingContentEnabled = true,
}
};
var client = new SecretClient(
new Uri("https://<keyvaultname>.vault.azure.net/"),
new DefaultAzureCredential(),
clientOptions);
Use su estrategia de registro preferida con un nivel de evento o registro detallado o de depuración o superior. Busque su estrategia en la tabla siguiente para obtener instrucciones específicas.
Enfoque | Instructions |
---|---|
Habilitación del registro con métodos integrados | Pase EventLevel.Verbose o EventLevel.LogAlways a AzureEventSourceListener.CreateConsoleLogger o AzureEventSourceListener.CreateTraceLogger |
Configuración del registro personalizado | Establezca el parámetro constructor level de la clase AzureEventSourceListener en EventLevel.Verbose o EventLevel.LogAlways |
Asignación al registro de ASP.NET Core | Agregue "Azure.Core": "Debug" a appsettings.json |
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahoraCursos
Módulo
Capturar registros de aplicación web con el registro de diagnósticos de App Service - Training
Sepa cómo capturar resultados de seguimiento de las aplicaciones web de Azure. Vea una secuencia de registro en vivo y descargue archivos de registro para realizar análisis sin conexión.