Azure App Service에서 앱에 대한 진단 로깅 사용Enable diagnostics logging for apps in Azure App Service

개요Overview

Azure는 App Service 앱을 디버그하는 데 도움이 되는 기본 제공 진단을 제공합니다.Azure provides built-in diagnostics to assist with debugging an App Service app. 이 문서에서는 진단 로그를 사용하도록 설정하는 방법, 애플리케이션에 계측을 추가하는 방법 및 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.

이 문서에서는 진단 로그 작업에 Azure Portal과 Azure CLI를 사용합니다.This article uses the Azure portal and Azure CLI to work with diagnostic logs. Visual Studio를 사용하여 진단 로그로 작업하는 방법에 대한 자세한 내용은 Visual Studio에서 Azure 문제 해결을 참조하세요.For information on working with diagnostic logs using Visual Studio, see Troubleshooting Azure in Visual Studio.

참고

이 문서의 로깅 지침 외에도 Azure 모니터링을 사용 하는 새로운 통합 로깅 기능이 있습니다.In addition to the logging instructions in this article, there's new, integrated logging capability with Azure Monitoring. 이 기능에 대 한 자세한 내용은 Azure Monitor에 대 한 로그 보내기 (미리 보기) 섹션에서 확인할 수 있습니다.You'll find more on this capability in the Send logs to Azure Monitor (preview) section.

유형Type 플랫폼Platform 위치Location DescriptionDescription
애플리케이션 로깅Application logging Windows, LinuxWindows, Linux App Service 파일 시스템 및/또는 Azure Storage blobApp Service file system and/or Azure Storage blobs 응용 프로그램 코드에 의해 생성 된 메시지를 기록 합니다.Logs messages generated by your application code. 사용자가 선택한 웹 프레임 워크 또는 사용자 언어의 표준 로깅 패턴을 사용 하 여 직접 응용 프로그램 코드에서 메시지를 생성할 수 있습니다.The messages can be generated by the web framework you choose, or from your application code directly using the standard logging pattern of your language. 각 메시지에는 중요, 오류, 경고, 정보, 디버그추적범주 중 하나가 할당 됩니다.Each message is assigned one of the following categories: Critical, Error, Warning, Info, Debug, and Trace. 응용 프로그램 로깅을 사용 하도록 설정할 때 심각도 수준을 설정 하 여 로깅을 원하는 세부 정보를 선택할 수 있습니다.You can select how verbose you want the logging to be by setting the severity level when you enable application logging.
웹 서버 로깅Web server logging WindowsWindows App Service 파일 시스템 또는 Azure Storage blobApp Service file system or Azure Storage blobs W3C 확장 로그 파일 형식의원시 HTTP 요청 데이터입니다.Raw HTTP request data in the W3C extended log file format. 각 로그 메시지에는 HTTP 메서드, 리소스 URI, 클라이언트 IP, 클라이언트 포트, 사용자 에이전트, 응답 코드 등의 데이터가 포함 됩니다.Each log message includes data such as the HTTP method, resource URI, client IP, client port, user agent, response code, and so on.
자세한 오류 메시지Detailed Error Messages WindowsWindows App Service 파일 시스템App Service file system 클라이언트 브라우저로 전송 된 .htm 오류 페이지의 복사본입니다.Copies of the .htm error pages that would have been sent to the client browser. 보안상의 이유로, 자세한 오류 페이지는 프로덕션 환경에서 클라이언트로 전송 되어서는 안 되지만 응용 프로그램 오류가 발생할 때마다 HTTP 코드 400 이상이 포함 된 오류 페이지를 저장할 수 App Service.For security reasons, detailed error pages shouldn't be sent to clients in production, but App Service can save the error page each time an application error occurs that has HTTP code 400 or greater. 이 페이지에는 서버에서 오류 코드를 반환 하는 이유를 확인 하는 데 도움이 되는 정보가 포함 될 수 있습니다.The page may contain information that can help determine why the server returns the error code.
실패한 요청 추적Failed request tracing WindowsWindows App Service 파일 시스템App Service file system 요청을 처리 하는 데 사용 되는 IIS 구성 요소 추적 및 각 구성 요소에서 소요 된 시간을 비롯 하 여 실패 한 요청에 대 한 자세한 추적 정보입니다.Detailed tracing information on failed requests, including a trace of the IIS components used to process the request and the time taken in each component. 사이트 성능을 향상시키거나 특정 HTTP 오류를 분리하려는 경우에 유용합니다.It's useful if you want to improve site performance or isolate a specific HTTP error. 실패 한 각 요청에 대해 XML 로그 파일이 포함 된 폴더와 로그 파일을 볼 XSL 스타일 시트가 하나씩 생성 됩니다.One folder is generated for each failed request, which contains the XML log file, and the XSL stylesheet to view the log file with.
배포 로깅Deployment logging Windows, LinuxWindows, Linux App Service 파일 시스템App Service file system 앱에 콘텐츠를 게시 하는 경우에 대 한 로그입니다.Logs for when you publish content to an app. 배포 로깅은 자동으로 수행 되며 배포 로깅에 대 한 구성 가능한 설정이 없습니다.Deployment logging happens automatically and there are no configurable settings for deployment logging. 배포가 실패 한 이유를 확인 하는 데 도움이 됩니다.It helps you determine why a deployment failed. 예를 들어 사용자 지정 배포 스크립트를 사용 하는 경우 배포 로깅을 사용 하 여 스크립트가 실패 하는 이유를 확인할 수 있습니다.For example, if you use a custom deployment script, you might use deployment logging to determine why the script is failing.

참고

App Service는 응용 프로그램 문제를 해결 하는 데 도움이 되는 전용 대화형 진단 도구를 제공 합니다.App Service provides a dedicated, interactive diagnostics tool to help you troubleshoot your application. 자세한 내용은 Azure App Service 진단 개요를 참조하세요.For more information, see Azure App Service diagnostics overview.

또한 다른 Azure 서비스를 사용 하 여 Azure Monitor와 같은 앱의 로깅 및 모니터링 기능을 향상 시킬 수 있습니다.In addition, you can use other Azure services to improve the logging and monitoring capabilities of your app, such as Azure Monitor.

응용 프로그램 로깅 사용 (Windows)Enable application logging (Windows)

참고

Blob 저장소에 대 한 응용 프로그램 로깅은 App Service와 동일한 지역에 있는 저장소 계정만 사용할 수 있습니다.Application logging for blob storage can only use storage accounts in the same region as the App Service

Azure Portal에서 Windows 앱에 대 한 응용 프로그램 로깅을 사용 하도록 설정 하려면 앱으로 이동 하 여 App Service 로그를 선택 합니다.To enable application logging for Windows apps in the Azure portal, navigate to your app and select App Service logs.

응용 프로그램 로깅 (파일 시스템) 또는 응용 프로그램 로깅 (Blob) 중 하나 또는 둘 모두에 대해 켜기 를 선택 합니다.Select On for either Application Logging (Filesystem) or Application Logging (Blob), or both.

Filesystem 옵션은 임시 디버깅 용도로 사용 되며 12 시간 이내에 해제 됩니다.The Filesystem option is for temporary debugging purposes, and turns itself off in 12 hours. Blob 옵션은 장기 로깅을 위한 것 이며, 로그를 쓸 blob 저장소 컨테이너가 필요 합니다.The Blob option is for long-term logging, and needs a blob storage container to write logs to. 또한 Blob 옵션에는 로그 메시지의 원본 VM 인스턴스 ID ( InstanceId ), 스레드 id () Tid 및 보다 세분화 된 타임 스탬프 ()와 같은 추가 정보가 로그 메시지에 포함 됩니다 EventTickCount .The Blob option also includes additional information in the log messages, such as the ID of the origin VM instance of the log message (InstanceId), thread ID (Tid), and a more granular timestamp (EventTickCount).

참고

현재 .NET 애플리케이션 로그만 Blob Storage에 쓸 수 있습니다.Currently only .NET application logs can be written to the blob storage. Java, PHP, Node.js, Python 응용 프로그램 로그는 App Service 파일 시스템에만 저장할 수 있습니다. 단, 외부 저장소에 로그를 기록 하기 위해 코드를 수정 하지 않아도 됩니다.Java, PHP, Node.js, Python application logs can only be stored on the App Service file system (without code modifications to write logs to external storage).

또한 저장소 계정의 액세스 키를 다시 생성하는 경우 업데이트 된 액세스 키를 사용 하도록 각 로깅 구성을 다시 설정 해야 합니다.Also, if you regenerate your storage account's access keys, you must reset the respective logging configuration to use the updated access keys. 다음을 수행합니다.To do this:

  1. 구성 탭에서 해당 로깅 기능을 끄기로 설정합니다.In the Configure tab, set the respective logging feature to Off. 설정을 저장합니다.Save your setting.
  2. 스토리지 계정 Blob에 로깅을 다시 사용합니다.Enable logging to the storage account blob again. 설정을 저장합니다.Save your setting.

로깅할 수준또는 세부 정보 수준을 선택 합니다.Select the Level, or the level of details to log. 다음 표에는 각 수준에 포함 된 로그 범주가 나와 있습니다.The following table shows the log categories included in each level:

LevelLevel 포함 된 범주Included categories
사용 안 함Disabled 없음None
오류Error 오류, 위험Error, Critical
경고Warning 경고, 오류, 위험Warning, Error, Critical
정보Information 정보, 경고, 오류, 위험Info, Warning, Error, Critical
VerboseVerbose 추적, 디버그, 정보, 경고, 오류, 위험(모든 범주)Trace, Debug, Info, Warning, Error, Critical (all categories)

작업을 마쳤으면 저장을 선택합니다.When finished, select Save.

응용 프로그램 로깅 사용 (Linux/컨테이너)Enable application logging (Linux/Container)

Azure Portal에서 Linux 앱 또는 사용자 지정 컨테이너 앱에 대 한 응용 프로그램 로깅을 사용 하도록 설정 하려면 앱으로 이동 하 여 App Service 로그를 선택 합니다.To enable application logging for Linux apps or custom container apps in the Azure portal, navigate to your app and select App Service logs.

응용 프로그램 로깅에서 파일 시스템을 선택 합니다.In Application logging, select File System.

할당량 (MB) 에서 응용 프로그램 로그에 대 한 디스크 할당량을 지정 합니다.In Quota (MB), specify the disk quota for the application logs. 보존 기간 (일) 에서 로그를 보존할 일 수를 설정 합니다.In Retention Period (Days), set the number of days the logs should be retained.

작업을 마쳤으면 저장을 선택합니다.When finished, select Save.

웹 서버 로깅 사용Enable web server logging

Azure Portal에서 Windows 앱에 대 한 웹 서버 로깅을 사용 하도록 설정 하려면 앱으로 이동 하 여 App Service logs를 선택 합니다.To enable web server logging for Windows apps in the Azure portal, navigate to your app and select App Service logs.

웹 서버 로깅의 경우 blob storage에 로그를 저장 하려면 저장소 를 선택 하 고, App Service 파일 시스템에 로그를 저장 하려면 파일 시스템 을 선택 합니다.For Web server logging, select Storage to store logs on blob storage, or File System to store logs on the App Service file system.

보존 기간 (일) 에서 로그를 보존할 일 수를 설정 합니다.In Retention Period (Days), set the number of days the logs should be retained.

참고

스토리지 계정의 선택키를 다시 생성하는 경우 해당 로깅 구성을 다시 설정하여 업데이트한 키를 사용해야 합니다.If you regenerate your storage account's access keys, you must reset the respective logging configuration to use the updated keys. 다음을 수행합니다.To do this:

  1. 구성 탭에서 해당 로깅 기능을 끄기로 설정합니다.In the Configure tab, set the respective logging feature to Off. 설정을 저장합니다.Save your setting.
  2. 스토리지 계정 Blob에 로깅을 다시 사용합니다.Enable logging to the storage account blob again. 설정을 저장합니다.Save your setting.

작업을 마쳤으면 저장을 선택합니다.When finished, select Save.

자세한 오류 기록Log detailed errors

Azure Portal에서 Windows 앱에 대 한 오류 페이지 또는 실패 한 요청 추적을 저장 하려면 앱으로 이동 하 여 App Service 로그를 선택 합니다.To save the error page or failed request tracing for Windows apps in the Azure portal, navigate to your app and select App Service logs.

자세한 오류 로깅 또는 실패 한 요청 추적에서 켜기를 선택한 다음, 저장을 선택 합니다.Under Detailed Error Logging or Failed Request Tracing, select On, then select Save.

두 로그 유형 모두 App Service 파일 시스템에 저장 됩니다.Both types of logs are stored in the App Service file system. 최대 50 오류 (파일/폴더)가 보존 됩니다.Up to 50 errors (files/folders) are retained. HTML 파일 수가 50을 초과 하면 가장 오래 된 26 개 오류가 자동으로 삭제 됩니다.When the number of HTML files exceed 50, the oldest 26 errors are automatically deleted.

코드에 로그 메시지 추가Add log messages in code

응용 프로그램 코드에서 일반적인 로깅 기능을 사용 하 여 응용 프로그램 로그에 로그 메시지를 보냅니다.In your application code, you use the usual logging facilities to send log messages to the application logs. 예를 들어:For example:

로그 스트리밍Stream logs

로그를 실시간으로 스트리밍하기 전에 원하는 로그 유형을 사용 하도록 설정 합니다.Before you stream logs in real time, enable the log type that you want. / Logfiles 디렉터리 (d:/home/logfiles)에 저장 된 .txt, .log 또는 .htm으로 끝나는 파일에 기록 된 모든 정보는 App Service에 의해 스트리밍됩니다.Any information written to files ending in .txt, .log, or .htm that are stored in the /LogFiles directory (d:/home/logfiles) is streamed by App Service.

참고

일부 유형의 로깅 버퍼는 로그 파일에 기록하고 이로 인해 스크림에서 이벤트가 작동하지 않을 수 있습니다.Some types of logging buffer write to the log file, which can result in out of order events in the stream. 예를 들어 사용자가 페이지를 방문할 때 발생한 애플리케이션 로그 항목이 페이지 요청에 대한 해당 HTTP 로그 항목보다 먼저 스트림에 표시될 수 있습니다.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.

Azure Portal에서In Azure portal

Azure Portal에서 로그를 스트리밍하려면 앱으로 이동 하 여 로그 스트림을 선택 합니다.To stream logs in the Azure portal, navigate to your app and select Log stream.

Cloud Shell에서In Cloud Shell

로그를 Cloud Shell에서 라이브로 스트리밍하려면 다음 명령을 사용 합니다.To stream logs live in Cloud Shell, use the following command:

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

오류와 같은 특정 이벤트를 필터링하려면 --Filter 매개 변수를 사용합니다.To filter specific events, such as errors, use the --Filter parameter. 예를 들어:For example:

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

HTTP와 같은 특정 로그 유형을 필터링하려면 -Path 매개 변수를 사용합니다.To filter specific log types, such as HTTP, use the --Path parameter. 예를 들어:For example:

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

로컬 터미널In local terminal

로컬 콘솔에서 로그를 스트리밍하려면 Azure CLI를 설치 하 고 계정에 로그인합니다.To stream logs in the local console, install Azure CLI and sign in to your account. 로그인 한 후 에는 Cloud Shell에 대 한 지침 을 따릅니다.Once signed in, followed the instructions for Cloud Shell

로그 파일 액세스Access log files

로그 유형에 대 한 Azure Storage blob 옵션을 구성 하는 경우 Azure Storage에서 작동 하는 클라이언트 도구가 필요 합니다.If you configure the Azure Storage blobs option for a log type, you need a client tool that works with Azure Storage. 자세한 내용은 Azure Storage 클라이언트 도구를 참조 하세요.For more information, see Azure Storage Client Tools.

App Service 파일 시스템에 저장 된 로그의 경우 브라우저에서 ZIP 파일을 다운로드 하는 가장 쉬운 방법은 다음과 같습니다.For logs stored in the App Service file system, the easiest way is to download the ZIP file in the browser at:

  • Linux/컨테이너 앱:https://<app-name>.scm.azurewebsites.net/api/logs/docker/zipLinux/container apps: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Windows 앱:https://<app-name>.scm.azurewebsites.net/api/dumpWindows apps: https://<app-name>.scm.azurewebsites.net/api/dump

Linux/컨테이너 앱의 경우 ZIP 파일에는 docker 호스트와 docker 컨테이너 모두에 대 한 콘솔 출력 로그가 포함 되어 있습니다.For Linux/container apps, the ZIP file contains console output logs for both the docker host and the docker container. 스케일 아웃 된 앱의 경우 ZIP 파일에는 각 인스턴스에 대 한 로그 집합이 하나 포함 됩니다.For a scaled-out app, the ZIP file contains one set of logs for each instance. App Service 파일 시스템에서 이러한 로그 파일은 /home/LogFiles 디렉터리의 내용입니다.In the App Service file system, these log files are the contents of the /home/LogFiles directory.

Windows 앱의 경우 ZIP 파일에는 App Service 파일 시스템의 D:\Home\LogFiles 디렉터리 내용이 포함 되어 있습니다.For Windows apps, the ZIP file contains the contents of the D:\Home\LogFiles directory in the App Service file system. 구조는 다음과 같습니다.It has the following structure:

로그 형식Log type 디렉터리Directory 설명Description
애플리케이션 로그 전송 사용Application logs /LogFiles/Application//LogFiles/Application/ 하나 이상의 텍스트 파일을 포함 합니다.Contains one or more text files. 로그 메시지의 형식은 사용 하는 로깅 공급자에 따라 달라 집니다.The format of the log messages depends on the logging provider you use.
실패 한 요청 추적Failed Request Traces /LogFiles/W3SVC # # # # # # # # #//LogFiles/W3SVC#########/ XML 파일 및 XSL 파일을 포함 합니다.Contains XML files, and an XSL file. 브라우저에서 형식이 지정 된 XML 파일을 볼 수 있습니다.You can view the formatted XML files in the browser.
자세한 오류 로그Detailed Error Logs /LogFiles/DetailedErrors//LogFiles/DetailedErrors/ 에는 HTM 오류 파일이 포함 되어 있습니다.Contains HTM error files. 브라우저에서 HTM 파일을 볼 수 있습니다.You can view the HTM files in the browser.
실패 한 요청 추적을 보는 또 다른 방법은 포털에서 앱 페이지로 이동 하는 것입니다.Another way to view the failed request traces is to navigate to your app page in the portal. 왼쪽 메뉴에서 문제 진단 및 해결을 선택 하 고 실패 한 요청 추적 로그를 검색 한 다음 아이콘을 클릭 하 여 원하는 추적을 찾아 봅니다.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.
웹 서버 로그Web Server Logs /LogFiles/http/RawLogs//LogFiles/http/RawLogs/ W3C 확장 로그 파일 형식을사용 하 여 서식이 지정 된 텍스트 파일을 포함 합니다.Contains text files formatted using the W3C extended log file format. 이 정보는 텍스트 편집기나 로그 파서와같은 유틸리티를 사용 하 여 읽을 수 있습니다.This information can be read using a text editor or a utility like Log Parser.
App Service는 s-computername , 또는 필드를 지원 하지 않습니다 s-ip cs-version .App Service doesn't support the s-computername, s-ip, or cs-version fields.
배포 로그Deployment logs /LogFiles/Git//deployments//LogFiles/Git/ and /deployments/ Git 배포에 대 한 로그 뿐만 아니라 내부 배포 프로세스에서 생성 된 로그를 포함 합니다.Contain logs generated by the internal deployment processes, as well as logs for Git deployments.

Azure Monitor로 로그 보내기 (미리 보기)Send logs to Azure Monitor (preview)

Azure Monitor 통합을 사용 하 여 진단 설정 (미리 보기)을 만들어 저장소 계정, Event Hubs 및 Log Analytics에 로그를 보낼 수 있습니다.With the new Azure Monitor integration, you can create Diagnostic Settings (preview) to send logs to Storage Accounts, Event Hubs and Log Analytics.

진단 설정 (미리 보기)Diagnostic Settings (preview)

지원 되는 로그 유형Supported log types

다음 표에서는 지원 되는 로그 유형 및 설명을 보여 줍니다.The following table shows the supported log types and descriptions:

로그 형식Log type Windows 지원Windows support Linux (Docker) 지원Linux (Docker) support 설명Description
AppServiceConsoleLogsAppServiceConsoleLogs TBATBA Yes 표준 출력 및 표준 오류Standard output and standard error
AppServiceHTTPLogsAppServiceHTTPLogs Yes Yes 웹 서버 로그Web server logs
Appservice환경 PlatformlogsAppServiceEnvironmentPlatformLogs Yes Yes App Service Environment: 크기 조정, 구성 변경 및 상태 로그App Service Environment: scaling, configuration changes, and status logs
AppServiceAuditLogsAppServiceAuditLogs Yes Yes FTP 및 Kudu를 통한 로그인 활동Login activity via FTP and Kudu
AppServiceFileAuditLogsAppServiceFileAuditLogs Yes TBDTBD FTP 및 Kudu를 통해 파일 변경File changes via FTP and Kudu
AppServiceAppLogsAppServiceAppLogs TBATBA Java SE & TomcatJava SE & Tomcat 애플리케이션 로그 전송 사용Application logs
AppServiceIPSecAuditLogsAppServiceIPSecAuditLogs Yes Yes IP 규칙의 요청Requests from IP Rules
AppServicePlatformLogsAppServicePlatformLogs TBATBA Yes 컨테이너 로그Container logs

다음 단계Next steps