Habilitar el registro de diagnósticos para las aplicaciones de Azure App ServiceEnable diagnostics logging for apps in Azure App Service

Información generalOverview

Azure integra diagnósticos para ayudar a depurar aplicaciones de App Service.Azure provides built-in diagnostics to assist with debugging an App Service app. En este artículo se ofrece información acerca de cómo habilitar el registro de diagnóstico, agregar instrumentación a la aplicación y obtener acceso a la información que registra Azure.In this article, you learn how to enable diagnostic logging and add instrumentation to your application, as well as how to access the information logged by Azure.

En este artículo se usa Azure Portal y la CLI de Azure para trabajar con registros de diagnóstico.This article uses the Azure portal and Azure CLI to work with diagnostic logs. Para obtener información acerca de cómo trabajar con registros de diagnóstico mediante Visual Studio, consulte Solución de problemas de Azure en Visual Studio.For information on working with diagnostic logs using Visual Studio, see Troubleshooting Azure in Visual Studio.

Diagnóstico del servidor web y diagnóstico de aplicacionesWeb server diagnostics and application diagnostics

App Service ofrece la funcionalidad de diagnóstico para registrar información del servidor web y de la aplicación web.App Service provides diagnostic functionality for logging information from both the web server and the web application. De forma lógica, estos diagnósticos se dividen en diagnósticos del servidor web y diagnóstico de aplicaciones.These are logically separated into web server diagnostics and application diagnostics.

Diagnósticos del servidor webWeb server diagnostics

Puede habilitar o deshabilitar los siguientes tipos de registros:You can enable or disable the following kinds of logs:

  • Registro detallado de errores: información detallada acerca de cualquier solicitud que dé como resultado el código de estado HTTP 400 o superior.Detailed Error Logging - Detailed information for any request that results in HTTP status code 400 or greater. Puede contener información que puede ayudar a determinar por qué el servidor devolvió el código de error.It may contain information that can help determine why the server returned the error code. Se genera un archivo HTML por cada error del sistema de archivos de la aplicación y se conservan hasta 50 errores (archivos).One HTML file is generated for each error in the app's file system, and up to 50 errors (files) are retained. Cuando se superan los 50 archivos HTML, se eliminan automáticamente los 26 archivos más antiguos.When the number of HTML files exceed 50, the oldest 26 files are automatically deleted.
  • Seguimiento de solicitudes con error : registra información detallada acerca de solicitudes con error, incluido un seguimiento de los componentes de IIS usados para procesar la solicitud y el tiempo dedicado a cada componente.Failed Request Tracing - Detailed information on failed requests, including a trace of the IIS components used to process the request and the time taken in each component. Resulta útil si desea mejorar el rendimiento del sitio o aislar un error HTTP específico.It's useful if you want to improve site performance or isolate a specific HTTP error. Se genera una carpeta por cada error del sistema de archivos de la aplicación.One folder is generated for each error in the app's file system. Las directivas de retención de archivo son las mismas que para el registro detallado de errores anterior.File retention policies are the same as the detailed error logging above.
  • Registro del servidor web : registra todas las transacciones HTTP con el formato de archivo de registro extendido de W3C.Web Server Logging - Information about HTTP transactions using the W3C extended log file format. Resulta útil al determinar las métricas totales del sitio, como el número de solicitudes tramitadas o que proceden de una dirección IP específica.It's useful when determining overall site metrics such as the number of requests handled or how many requests are from a specific IP address.

Diagnósticos de aplicacionesApplication diagnostics

El diagnóstico de aplicaciones le permite capturar información generada por una aplicación web.Application diagnostics allows you to capture information produced by a web application. Las aplicaciones de ASP.NET pueden usar la clase System.Diagnostics.Trace para registrar información en el registro de diagnóstico de la aplicación.ASP.NET applications can use the System.Diagnostics.Trace class to log information to the application diagnostics log. Por ejemplo:For example:

System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");

En tiempo de ejecución puede recuperar estos registros para ayudar a solucionar problemas.At runtime, you can retrieve these logs to help with troubleshooting. Para obtener más información, vea Troubleshooting Azure App Service in Visual Studio (Solución de problemas de Azure App Service en Visual Studio).For more information, see Troubleshooting Azure App Service in Visual Studio.

App Service también registra información de implementación al publicar contenido en una aplicación.App Service also logs deployment information when you publish content to an app. Esta acción se lleva a cabo automáticamente, por lo que no es necesario realizar ninguna configuración para el registro de implementaciones.It happens automatically and there are no configuration settings for deployment logging. El registro de implementaciones le permite determinar por qué se ha producido un error con la implementación.Deployment logging allows you to determine why a deployment failed. Por ejemplo, si usa un script de implementación personalizado, puede determinar por qué se ha producido un error con el script mediante el registro de implementaciones.For example, if you use a custom deployment script, you might use deployment logging to determine why the script is failing.

Habilitación de diagnósticosHow to enable diagnostics

Para habilitar el diagnóstico en Azure Portal, vaya a la página de la aplicación y haga clic en Configuración > Registros de diagnóstico.To enable diagnostics in the Azure portal, go to the page for your app and click Settings > Diagnostics logs.

Parte de los registrosLogs part

Cuando habilite Diagnóstico de aplicaciones, elija también Nivel.When you enable application diagnostics, you also choose the Level. En la siguiente tabla se muestran las categorías de registros de que incluye cada nivel:The following table shows the categories of logs each level includes:

NivelLevel Categorías de registro incluidasIncluded log categories
DeshabilitadaDisabled NoneNone
ErrorError Error, CríticoError, Critical
Warning (ADVERTENCIA)Warning Advertencia, Error, CríticoWarning, Error, Critical
InformaciónInformation Información, Advertencia, Error, CríticoInfo, Warning, Error, Critical
DetalladoVerbose Seguimiento, Depurar, Información, Advertencia, Error, Crítico (todas las categorías)Trace, Debug, Info, Warning, Error, Critical (all categories)
- -

Para la opción Registro de aplicaciones, puede activar temporalmente la opción del sistema de archivos con fines de depuración.For Application logging, you can turn on the file system option temporarily for debugging purposes. Esta opción se desactiva automáticamente en 12 horas.This option turns off automatically in 12 hours. También puede activar la opción de Blob Storage para seleccionar un contenedor de blob en el que escribir registros.You can also turn on the blob storage option to select a blob container to write logs to.

Nota

Actualmente, solo los registros de aplicación de .NET pueden escribirse en el almacenamiento de blobs.Currently only .NET application logs can be written to the blob storage. Los registros de aplicaciones de Java, PHP, Node.js, Python solo se pueden almacenar en el sistema de archivos (sin modificaciones de código para escribir registros en un almacenamiento externo).Java, PHP, Node.js, Python application logs can only be stored on the file system (without code modifications to write logs to external storage).

Para la opción Registro del servidor web, puede seleccionar Almacenamiento o Sistema de archivos.For Web server logging, you can select storage or file system. Si selecciona almacenamiento, tiene la opción de seleccionar una cuenta de almacenamiento y, después, un contenedor de blobs en el que se escribirán los registros.Selecting storage allows you to select a storage account, and then a blob container that the logs are written to.

Si almacena registros en el sistema de archivos, es posible obtener acceso a estos archivos por FTP, o bien se pueden descargar como un archivo ZIP mediante la CLI de Azure.If you store logs on the file system, the files can be accessed by FTP, or downloaded as a Zip archive by using Azure CLI.

De forma predeterminada, los registros no se eliminan automáticamente (con la excepción del Registro de aplicaciones [sistema de archivos] ).By default, logs are not automatically deleted (with the exception of Application Logging (Filesystem)). Para eliminar automáticamente los registros, establezca el campo Período de retención (días) .To automatically delete logs, set the Retention Period (Days) field.

Nota

Si se regeneran las claves de acceso de su cuenta de almacenamiento, deberá restablecer la configuración de registro correspondiente para usar las claves actualizadas.If you regenerate your storage account's access keys, you must reset the respective logging configuration to use the updated keys. Para ello, siga estos pasos:To do this:

  1. En la pestaña Configurar, establezca la característica de registro correspondiente de Desactivar.In the Configure tab, set the respective logging feature to Off. Guarde la configuración.Save your setting.
  2. Vuelva a habilitar el registro en el blob de la cuenta de almacenamiento.Enable logging to the storage account blob again. Guarde la configuración.Save your setting.

Se puede habilitar cualquier combinación de sistema de archivos o almacenamiento de blobs al mismo tiempo, y estas opciones tienen configuraciones de nivel de registro individuales.Any combination of file system or blob storage can be enabled at the same time, and have individual log level configurations. Por ejemplo, puede registrar errores y advertencias en el almacenamiento de blobs como una solución de registro a largo plazo, mientras habilita el registro en el sistema de archivos con un nivel detallado.For example, you may wish to log errors and warnings to blob storage as a long-term logging solution, while enabling file system logging with a level of verbose.

Si bien las ubicaciones de almacenamiento ofrecen la misma información básica de los eventos registrados, blob storage registra información adicional, como el id. de instancia, el id. del subproceso y una marca de tiempo más pormenorizada (formato de marca de graduación) que el registro en file system.While both storage locations provide the same basic information for logged events, blob storage logs additional information such as the instance ID, thread ID, and a more granular timestamp (tick format) than logging to file system.

Nota

Solo se puede obtener acceso a la información almacenada en blob storage mediante una aplicación o un cliente de almacenamiento que pueda trabajar directamente con estos sistemas de almacenamiento.Information stored in blob storage can only be accessed using a storage client or an application that can directly work with these storage systems. Por ejemplo, Visual Studio 2013 contiene un Explorador de Storage que se puede usar para explorar Blob Storage y HDInsight puede obtener acceso a los datos almacenados en Blob Storage.For example, Visual Studio 2013 contains a Storage Explorer that can be used to explore blob storage, and HDInsight can access data stored in blob storage. También puede escribir una aplicación que obtiene acceso a Azure Storage mediante algunos de los SDK de Azure.You can also write an application that accesses Azure Storage by using one of the Azure SDKs.

Instrucciones: Descargar registrosHow to: Download logs

Se puede acceder a la información de diagnóstico almacenada en el sistema de archivos de la aplicación directamente mediante FTP.Diagnostic information stored to the app file system can be accessed directly using FTP. También se puede descargar como un archivo ZIP mediante la CLI de Azure.It can also be downloaded as a Zip archive using Azure CLI.

La estructura de directorios en que se almacenan los registros es la siguiente:The directory structure that the logs are stored in is as follows:

  • Registros de aplicaciones : /LogFiles/Application/.Application logs - /LogFiles/Application/. Esta carpeta contiene uno o varios archivos de texto con información generada por el registro de aplicaciones.This folder contains one or more text files containing information produced by application logging.
  • Seguimientos de solicitudes con error : /LogFiles/W3SVC#########/.Failed Request Traces - /LogFiles/W3SVC#########/. Esta carpeta contiene un archivo XSL y uno o varios archivos XML.This folder contains an XSL file and one or more XML files. Asegúrese de descargar el archivo XSL en el mismo directorio de los archivos XML, porque el archivo XSL proporciona funcionalidad para dar formato y filtrar los contenidos de los archivos XML cuando se visualizan en Internet Explorer.Ensure that you download the XSL file into the same directory as the XML file(s) because the XSL file provides functionality for formatting and filtering the contents of the XML file(s) when viewed in Internet Explorer.
  • Registros detallados de errores : /LogFiles/DetailedErrors/.Detailed Error Logs - /LogFiles/DetailedErrors/. Esta carpeta contiene uno o varios archivos .htm con información amplia de todos los errores HTTP que se han producido.This folder contains one or more .htm files that provide extensive information for any HTTP errors that have occurred.
  • Registros de servidor web : /LogFiles/http/RawLogs.Web Server Logs - /LogFiles/http/RawLogs. Esta carpeta contiene uno o varios archivos de texto a los que se le aplica el formato de archivo de registro extendido W3C.This folder contains one or more text files formatted using the W3C extended log file format.
  • Registros de implementaciones : /LogFiles/Git.Deployment logs - /LogFiles/Git. Esta carpeta contiene registros generados por los procesos de implementación internos usados por Azure App Service, además de los registros de las implementaciones Git.This folder contains logs generated by the internal deployment processes used by Azure App Service, as well as logs for Git deployments. También puede encontrar registros de implementación en D:\home\site\deployments.You can also find deployment logs under D:\home\site\deployments.

FTPFTP

Para abrir una conexión FTP al servidor FTP de la aplicación, consulte Implementación de la aplicación en Azure App Service mediante FTP/S.To open an FTP connection to your app's FTP server, see Deploy your app to Azure App Service using FTP/S.

Una vez conectado al servidor FTP/S de la aplicación, abra la carpeta LogFiles, donde se almacenan los archivos de registro.Once connected to your app's FTP/S server, open the LogFiles folder, where the log files are stored.

Descarga con la CLI de AzureDownload with Azure CLI

Para descargar los archivos de registro mediante la interfaz de la línea de comandos de Azure, abra una sesión nueva del símbolo del sistema, PowerShell, Bash o Terminal y escriba el siguiente comando:To download the log files using the Azure Command Line Interface, open a new command prompt, PowerShell, Bash, or Terminal session and enter the following command:

az webapp log download --resource-group resourcegroupname --name appname

Este comando guarda los registros de la aplicación denominada "appname" en un archivo denominado webapp_logs.zip en el directorio actual.This command saves the logs for the app named 'appname' to a file named webapp_logs.zip in the current directory.

Nota

Si no tiene instalada la CLI de Azure o si no la ha configurado para que use la suscripción a Azure, consulte la Introducción a la CLI de Azure.If you haven't installed Azure CLI, or haven't configured it to use your Azure Subscription, see How to Use Azure CLI.

Procedimientos para: Visualización de registros en Application InsightsHow to: View logs in Application Insights

Visual Studio Application Insights proporciona herramientas para filtrar y buscar registros y para correlacionar los registros con solicitudes y otros eventos.Visual Studio Application Insights provides tools for filtering and searching logs, and for correlating the logs with requests and other events.

  1. Incorporación del SDK de Application Insights al proyecto de Visual StudioAdd the Application Insights SDK to your project in Visual Studio.
    • En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y elija Agregar Application Insights.In Solution Explorer, right-click your project and choose Add Application Insights. La interfaz le guiará a través de pasos que incluyen la creación de un recurso de Application Insights.The interface guides you through steps that include creating an Application Insights resource. Más informaciónLearn more
  2. Agregue el paquete del agente de escucha.Add the Trace Listener package to your project.
    • Haga clic con el botón derecho en el proyecto y elija Administrar paquetes NuGet.Right-click your project and choose Manage NuGet Packages. Seleccione Microsoft.ApplicationInsights.TraceListener Más informaciónSelect Microsoft.ApplicationInsights.TraceListener Learn more
  3. Cargue el proyecto y ejecútelo para generar datos de registro.Upload your project and run it to generate log data.
  4. En Azure Portal, busque el nuevo recurso de Application Insights y abra Buscar.In the Azure portal, browse to your new Application Insights resource, and open Search. Verá los datos de registro, junto con la solicitud, el uso y otros datos de telemetría.You should see your log data, along with request, usage, and other telemetry. Es posible que algunos datos de telemetría demoren unos minutos en aparecer: haga clic en Actualizar.Some telemetry might take a few minutes to arrive: click Refresh. Más informaciónLearn more

Obtenga más información acerca del seguimiento del rendimiento con Application InsightsLearn more about performance tracking with Application Insights

Instrucciones: Transmisión de registrosHow to: Stream logs

Al implementar una aplicación, suele resultar útil ver la información de registro casi en tiempo real.While developing an application, it is often useful to see logging information in near-real time. Puede transmitir información de registro al entorno de desarrollo mediante la CLI de Azure.You can stream logging information to your development environment using Azure CLI.

Nota

Algunos tipos de búfer de registros se escriben en el archivo de registro, lo que puede ocasionar la transmisión de eventos desordenados.Some types of logging buffer write to the log file, which can result in out of order events in the stream. Por ejemplo, una entrada de registro de aplicaciones que se genera cuando un usuario visita una página se puede visualizar en la transmisión antes de la entrada de registro HTTP correspondiente para la solicitud de la página.For example, an application log entry that occurs when a user visits a page may be displayed in the stream before the corresponding HTTP log entry for the page request.

Nota

La transmisión de registros también transmite información escrita en cualquier archivo de texto almacenado en la carpeta D:\home\LogFiles\ .Log streaming also streams information written to any text file stored in the D:\home\LogFiles\ folder.

Streaming con la CLI de AzureStreaming with Azure CLI

Para transmitir información de registro, abra una nueva sesión del símbolo del sistema, PowerShell, Bash o Terminal y escriba el siguiente comando:To stream logging information, open a new command prompt, PowerShell, Bash, or Terminal session and enter the following command:

az webapp log tail --name appname --resource-group myResourceGroup

Este comando establece conexión con la aplicación denominada "appname" y comenzará a transmitir información a la ventana a medida que se produzcan los eventos de registro en la aplicación.This command connects to the app named 'appname' and begin streaming information to the window as log events occur on the app. Toda la información escrita en archivos terminados en .txt, .log o .htm almacenados en el directorio /LogFiles (d:/home/logfiles) se transmite a la consola local.Any information written to files ending in .txt, .log, or .htm that are stored in the /LogFiles directory (d:/home/logfiles) is streamed to the local console.

Para filtrar eventos específicos, como errores, use el parámetro --Filter .To filter specific events, such as errors, use the --Filter parameter. Por ejemplo:For example:

az webapp log tail --name appname --resource-group myResourceGroup --filter Error

Para filtrar tipos de registros específicos, como HTTP, use el parámetro --Path .To filter specific log types, such as HTTP, use the --Path parameter. Por ejemplo:For example:

az webapp log tail --name appname --resource-group myResourceGroup --path http

Nota

Si no tiene instalada la CLI de Azure o si no la ha configurado para que use la suscripción a Azure, consulte la Introducción a la CLI de Azure.If you haven't installed Azure CLI, or haven't configured it to use your Azure Subscription, see How to Use Azure CLI.

Instrucciones: Información sobre los registros de diagnósticoHow to: Understand diagnostics logs

Registros de diagnóstico de aplicacionesApplication diagnostics logs

El diagnóstico de aplicaciones almacena información con un formato específico para aplicaciones .NET, en función de si almacena los registros en el sistema de archivos o en Blob Storage.Application diagnostics stores information in a specific format for .NET applications, depending on whether you store logs to the file system or blob storage.

El conjunto base de datos almacenados es el mismo en ambos tipos de almacenamiento: la fecha y la hora en que se ha producido el evento, el id. del proceso que ha producido el evento, el tipo de evento (información, advertencia o error) y el mensaje del evento.The base set of data stored is the same across both storage types - the date and time the event occurred, the process ID that produced the event, the event type (information, warning, error), and the event message. El uso del sistema de archivos para el almacenamiento de registros es útil cuando necesita acceso inmediato para solucionar un problema porque los archivos de registro se actualizan casi al instante.Using the file system for log storage is useful when you need immediate access to troubleshoot an issue because the log files are updated near instantaneously. Blob Storage se usa con fines de archivado porque los archivos se almacenan en caché y, a continuación, se vacían en el contenedor de almacenamiento según una programación.Blob storage is used for archival purposes because the files are cached and then flushed to the storage container on a schedule.

Sistema de archivosFile system

Cada línea registrada en el sistema de archivos o recibida mediante transmisión presentará el siguiente formato:Each line logged to the file system or received using streaming is in the following format:

{Date}  PID[{process ID}] {event type/level} {message}

Por ejemplo, un evento de error presentaría un formato similar al siguiente:For example, an error event would appear similar to the following sample:

2014-01-30T16:36:59  PID[3096] Error       Fatal error on the page!

El registro en el sistema de archivos ofrece la información más básica de los tres métodos disponibles, ya que ofrece solo la hora, el identificador del proceso, el nivel de evento y el mensaje.Logging to the file system provides the most basic information of the three available methods, providing only the time, process ID, event level, and message.

Blob StorageBlob storage

Al realizar registros en el almacenamiento de blobs, los datos se almacenan con un formato de valores separados por comas (CSV).When logging to blob storage, data is stored in comma-separated values (CSV) format. Se registran campos adicionales para ofrecer información más pormenorizada acerca del evento.Additional fields are logged to provide more granular information about the event. Las siguientes propiedades se usan para cada fila con el formato CSV:The following properties are used for each row in the CSV:

Nombre de propiedadProperty name Valor/formatoValue/format
DateDate La fecha y la hora en que se ha producido el eventoThe date and time that the event occurred
NivelLevel Nivel del evento (por ejemplo, error, advertencia, información).Event level (for example, error, warning, information)
ApplicationNameApplicationName El nombre de la aplicaciónThe app name
InstanceIdInstanceId Instancia de la aplicación en la que se ha producido el eventoInstance of the app that the event occurred on
EventTickCountEventTickCount La fecha y hora en que se ha producido el evento, con formato de marca de graduación (mayor precisión)The date and time that the event occurred, in Tick format (greater precision)
EventIdEventId El identificador de este eventoThe event ID of this event

El valor predeterminado es 0 si no se ha especificado ningunoDefaults to 0 if none specified

PidPid Identificador del procesoProcess ID
TidTid El identificador del subproceso que ha generado el eventoThe thread ID of the thread that produced the event
MessageMessage Mensaje detallado del eventoEvent detail message

Los datos almacenados en un blob serían similares a los siguientes:The data stored in a blob would look similar to the following example:

date,level,applicationName,instanceId,eventTickCount,eventId,pid,tid,message
2014-01-30T16:36:52,Error,mywebapp,6ee38a,635266966128818593,0,3096,9,An error occurred

Nota

En el caso de ASP.NET Core, el registro se realiza mediante el proveedor Microsoft.Extensions.Logging.AzureAppServices. Este proveedor deposita archivos de registro adicionales en el contenedor de blobs.For ASP.NET Core, logging is accomplished using the Microsoft.Extensions.Logging.AzureAppServices provider This provider deposits additional log files into the blob container. Para más información, consulte el artículo sobre el registro de ASP.NET Core en Azure.For more information, see ASP.NET Core logging in Azure.

Seguimientos de solicitudes con errorFailed request traces

El seguimiento de solicitudes con error se almacena en archivos XML con nombre fr######.xml.Failed request traces are stored in XML files named fr######.xml. Para facilitar la visualización de la información registrada, se proporciona una hoja de estilo XSL con nombre freb.xsl en el mismo directorio que los archivos XML.To make it easier to view the logged information, an XSL stylesheet named freb.xsl is provided in the same directory as the XML files. Si abre uno de los archivos XML en Internet Explorer, se usará la hoja de estilo XSL para ofrecer una visualización con formato de la información de seguimiento, similar a la siguiente:If you open one of the XML files in Internet Explorer, Internet Explorer uses the XSL stylesheet to provide a formatted display of the trace information, similar to the following example:

solicitud con error visualizada en el explorador

Nota

Una manera sencilla de ver los seguimientos de las solicitudes con error con formato consiste en navegar a la página de la aplicación en el portal.An easy way to view the formatted failed request traces is to navigate to your app's page in the portal. En el menú izquierdo, seleccione Diagnosticar y solucionar problemas, busque registros de seguimiento de solicitudes erróneas y haga clic en el icono para examinar y ver el seguimiento que desee.From the left menu, select Diagnose and solve problems, then search for Failed Request Tracing Logs, then click the icon to browse and view the trace you want.

Registros detallados de erroresDetailed error logs

Los registros de error detallados son documentos HTML que ofrecen información más detallada sobre los errores HTTP que se han producido.Detailed error logs are HTML documents that provide more detailed information on HTTP errors that have occurred. Habida cuenta de que se trata sencillamente de documentos HTML, se pueden ver en un explorador web.Since they are simply HTML documents, they can be viewed using a web browser.

Registros de servidor webWeb server logs

A los registros del servidor web se les aplica el formato de archivo de registro extendido W3C.The web server logs are formatted using the W3C extended log file format. Esta información se puede leer con un editor de texto o analizarse con utilidades como el analizador del registro.This information can be read using a text editor or parsed using utilities such as Log Parser.

Nota

Los registros generados por Azure App Service no admiten los campos s-computername, s-ip o cs-version.The logs produced by Azure App Service do not support the s-computername, s-ip, or cs-version fields.

Pasos siguientesNext steps