Editar

Share via


Registro en Gridwich

Azure

Estos son algunos procedimientos recomendados para el registro:

  • No use el formato de cadena ni la interpolación. El registro de una cadena con $"This broke {brokenThing}" no es útil para la depuración.

  • Pase los objetos para que se conviertan en campos de búsqueda.

    En lugar de LogInformation(LogEventIds.StartProcessing, $"Processing has started on item {Item.itemNumber}");, use:

    • Un objeto como tal, como LogInformationObject(LogEventIds.StartProcessing, Item);.
    • Objetos anónimos, como LogInformationObject(LogEventIds.StartProcessing, new {Item.itemNumber, Item.itemDescription, someData});.
  • Siga las convenciones de numeración de EventId descritas en LogEventIds.

  • Para cualquier cuerpo importante del trabajo, use el siguiente patrón de registro:

    • Utilice LogInformationObject en la entrada, por ejemplo, al iniciar un trabajo de codificación.
    • Si se realiza correctamente, por ejemplo, el trabajo de codificación, use LogInformationObject.
    • Si se produce un error, por ejemplo, en el trabajo de codificación, use LogWarningObject, LogErrorObject o LogCriticalObject. Use variantes del método Exception si procede.
  • Aunque puede registrar cualquier tipo de información en cualquier etapa, no contamine los registros con ruido.

ObjectLogger

ObjectLogger con IObjectLogger es una pequeña utilidad de contenedor para la versión estándar de Logger/ILogger. Esta utilidad de una sola parte registra cualquier objeto de C#; los convierte en objetos de diccionario que el registrador consume.

ObjectLogger/IObjectLogger restringe el uso de los métodos de registrador que no tengan EventIds mediante el uso de un patrón de adaptador, en lugar de mediante la herencia. Esta restricción obliga a los desarrolladores a usar EventIds, útiles para la depuración.

Otras recomendaciones para el uso de ObjectLogger:

  • No omita IObjectLogger con ILogger.
  • Use IObjectLogger con el tipo adecuado para la clase: IObjectLogger<myClass>.
  • En cualquier excepción que controle bloques catch, use los métodos IObjectLogger que incluyan excepciones. Los proveedores de registro como Application Insights pueden utilizar la información de la excepción.

Registro de esquemas y datos

La infraestructura del entorno de tiempo de ejecución de Event Grid subyacente proporciona un esquema de base. El esquema de eventos de Event Grid incluye la hora del evento, el dispositivo de origen, el nivel de gravedad y el mensaje de cadena. Las propiedades personalizadas predeterminadas de Logger/ILogger incluyen EventId, Category y RequestPath.

Objetos de contexto

Para trabajar con API complejas y flujos de trabajo que requieren varias entradas y salidas, puede crear un objeto de contexto, que es un contenedor de propiedades de las variables importantes que el código puede pasar o generar. Los objetos de contexto pueden controlar muchos parámetros y no es necesario cambiar las firmas de método al agregar o quitar parámetros. También puede pasar objetos de contexto al registrador y otras interfaces como unidades.

Por ejemplo, en lugar de:

var store = new StorageBlob();
var tier = req.Query["tier"];
var result = await store.SetBlobStorageTier(blobName, tier);
logger.LogInformationObject(LogEventIds.setBlobProperties, result);

Puede codificar:

var storageContext = new StorageContext();
storageContext.Store = new StorageBlob();
storageContext.Tier = req.Query["tier"];
storageContext.Result = await store.SetBlobStorageTier(blobName, storageContext.Tier);
logger.LogInformationObject(LogEventIds.setBlobProperties, storageContext);

Niveles de registro

La asignación del nivel de registro adecuado puede no resultar sencilla. Las siguientes descripciones generales de los niveles de registro proceden de LogLevel Enum.

LogLevel Enum Descripción
LogTrace 0 Contiene los mensajes más detallados y puede contener datos confidenciales de la aplicación. Estos mensajes están desactivados de forma predeterminada y no deben activarse en un entorno de producción.
LogDebug 1 Se usa para la investigación interactiva durante el desarrollo. Estos registros contienen principalmente información útil para la depuración y no tienen valor para el futuro.
LogInformation 2 Realiza el seguimiento del flujo general de la aplicación. Estos registros deben tener un valor a largo plazo.
LogWarning 3 Resalta un evento anormal o inesperado en el flujo de la aplicación, pero que no la detiene.
LogError 4 Registra qué momento se detiene el flujo de ejecución actual por un error. Estos registros deben indicar errores en la actividad actual, no a nivel de la aplicación.
LogCritical 5 Describe una aplicación irrecuperable, un bloqueo del sistema o un error grave que requiere atención inmediata.
LogNone 6 No se usan para escribir mensajes de registro. Especifica que una categoría de registro no debe escribir ningún mensaje.

Pasos siguientes

Documentación del producto:

Módulos de Microsoft Learn: