Azure App Service에서 앱에 대한 진단 로깅 사용

이 비디오에서는 앱에 진단 로깅을 사용하도록 설정하는 방법을 보여 줍니다.

비디오의 단계도 다음 섹션에 설명되어 있습니다.

개요

Azure는 App Service 앱을 디버그하는 데 도움이 되는 기본 제공 진단을 제공합니다. 이 문서에서는 진단 로그를 사용하도록 설정하는 방법, 애플리케이션에 계측을 추가하는 방법 및 Azure에서 기록된 정보에 액세스하는 방법을 설명합니다.

이 문서에서는 진단 로그 작업에 Azure Portal과 Azure CLI를 사용합니다. Visual Studio를 사용하여 진단 로그로 작업하는 방법에 대한 자세한 내용은 Visual Studio에서 Azure 문제 해결을 참조하세요.

참고 항목

이 문서의 로깅 지침 외에도 Azure Monitoring을 사용하는 새로운 통합 로깅 기능이 있습니다. 이 기능에 대한 자세한 내용은 Azure Monitor에 로그 보내기 섹션에서 확인할 수 있습니다.

유형 플랫폼 위치 Description
애플리케이션 로깅 Windows, Linux App Service 파일 시스템 및/또는 Azure Storage BLOB 애플리케이션 코드로 생성된 로그 메시지입니다. 사용자가 선택한 웹 프레임워크 또는 사용자 언어의 표준 로깅 패턴을 사용하여 직접 애플리케이션 코드에서 메시지를 생성할 수 있습니다. 각 메시지에는 중요, 오류, 경고, 정보, 디버그추적범주 중 하나가 할당됩니다. 애플리케이션 로깅을 사용하도록 설정할 때 심각도 수준을 설정하여 로깅을 원하는 세부 정보를 선택할 수 있습니다.
웹 서버 로깅 Windows App Service 파일 시스템 또는 Azure Storage BLOB W3C 확장 로그 파일 형식의원시 HTTP 요청 데이터. 각 로그 메시지에는 HTTP 메서드, 리소스 URI, 클라이언트 IP, 클라이언트 포트, 사용자 에이전트, 응답 코드 등의 데이터가 포함됩니다.
상세한 오류 메시지 Windows App Service 파일 시스템 클라이언트 브라우저로 전송된 .htm 오류 페이지의 복사본입니다. 보안상의 이유로, 자세한 오류 페이지는 프로덕션 환경에서 클라이언트로 전송되어서는 안 되지만 App Service는 HTTP 코드 400 이상이 포함된 애플리케이션 오류가 발생할 때마다 오류 페이지를 저장할 수 있습니다. 이 페이지에는 서버에서 오류 코드를 반환하는 이유를 확인하는 데 유용한 정보가 포함될 수 있습니다.
실패한 요청 추적 Windows App Service 파일 시스템 요청을 처리하는 데 사용된 IIS 구성 요소 추적 및 각 구성 요소에 소요된 시간을 포함하는 실패한 요청에 대한 자세한 추적 정보입니다. 사이트 성능을 향상시키거나 특정 HTTP 오류를 분리하려는 경우에 유용합니다. 실패한 각 요청마다 로그 파일을 볼 수 있는 XML 로그 파일과 XSL 스타일 시트가 포함된 폴더가 하나씩 생성됩니다.
배포 로깅 Windows, Linux App Service 파일 시스템 앱에 콘텐츠를 게시하는 경우에 대한 로그. 배포 로깅은 자동으로 수행되며 이에 대한 구성 설정은 없습니다. 배포가 실패한 이유를 확인하는 데 도움이 됩니다. 예를 들어 사용자 지정 배포 스크립트를 사용하는 경우 배포 로깅을 사용하여 스크립트가 실패한 이유를 확인할 수 있습니다.

App Service 파일 시스템에 저장되면 로그에는 가격 책정 계층에 사용 가능한 스토리지가 적용됩니다(App Service 제한 참조).

참고 항목

App Service는 애플리케이션 문제를 해결하는 데 유용한 전용 대화형 진단 도구를 제공합니다. 자세한 내용은 Azure App Service 진단 개요를 참조하세요.

또한 다른 Azure 서비스를 사용하여 Azure Monitor와 같은 앱의 로깅 및 모니터링 기능을 향상시킬 수 있습니다.

애플리케이션 로깅 사용(Windows)

Azure Portal에서 Windows 앱에 대한 애플리케이션 로깅을 사용하도록 설정하려면 앱으로 이동하여 App Service 로그를 선택합니다.

Application Logging(Filesystem) 또는 Application Logging(BLOB) 중 하나 또는 둘 모두에 대해 켜기를 선택합니다.

Filesystem 옵션은 임시 디버깅 용도로 사용되며 12시간 이내에 해제됩니다. BLOB 옵션은 장기간 로깅을 위한 옵션이며, 로그를 쓸 BLOB 스토리지 컨테이너가 필요합니다. 또한 BLOB 옵션에는 로그 메시지의 원본 VM 인스턴스 ID(InstanceId), 스레드 ID(Tid) 및 보다 세분화된 타임스탬프(EventTickCount)와 같은 로그 메시지의 추가 정보가 포함됩니다.

참고 항목

현재 .NET 애플리케이션 로그만 Blob Storage에 쓸 수 있습니다. Java, PHP, Node.js, Python 애플리케이션 로그는 App Service 파일 시스템에만 저장할 수 있습니다. 단, 외부 스토리지에 로그를 기록하기 위해 코드를 수정하지 않아도 됩니다.

스토리지 계정의 액세스 키를 다시 생성하는 경우 각 로깅 구성을 다시 설정하여 업데이트한 키를 사용해야 합니다. 방법:

  1. 구성 탭에서 해당 로깅 기능을 끄기로 설정합니다. 설정을 저장합니다.
  2. 스토리지 계정 Blob에 로깅을 다시 사용합니다. 설정을 저장합니다.

로깅할 수준 또는 로깅할 세부 정보의 수준을 선택합니다. 다음 표에는 각 수준에 포함된 로그 범주가 나와 있습니다.

Level 포함된 범주
사용 안 함 없음
오류 오류, 위험
경고 경고, 오류, 위험
정보 정보, 경고, 오류, 위험
Verbose 추적, 디버그, 정보, 경고, 오류, 위험(모든 범주)

작업을 마쳤으면 저장을 선택합니다.

참고 항목

Blob에 로그를 작성하는 경우 앱을 삭제하고 Blob에 로그를 유지하는 경우 보존 정책이 더 이상 적용되지 않습니다. 자세한 내용은 리소스 삭제 후 발생할 수 있는 비용을 참조하세요.

애플리케이션 로깅 사용(Linux/컨테이너)

Azure Portal에서 Linux 앱 또는 사용자 지정 컨테이너에 대한 애플리케이션 로깅을 활성화하려면 앱으로 이동하여 App Service 로그를 선택합니다.

애플리케이션 로깅에서 파일 시스템을 선택합니다.

할당량(MB) 에서 애플리케이션 로그에 쓸 디스크 할당량을 지정합니다. 보존 기간(일) 에서 로그를 보존할 일수를 설정합니다.

작업을 마쳤으면 저장을 선택합니다.

웹 서버 로깅 사용

Azure Portal에서 Windows 앱에 대한 웹 서버 로깅을 사용하도록 설정하려면 앱으로 이동하여 App Service 로그를 선택합니다.

웹 서버 로깅의 경우 BLOB 스토리지에 로그를 저장하려면 스토리지를 선택하고, App Service 파일 시스템에 로그를 저장하려면 파일 시스템을 선택합니다.

보존 기간(일) 에서 로그를 보존할 일수를 설정합니다.

참고 항목

스토리지 계정의 선택키를 다시 생성하는 경우 해당 로깅 구성을 다시 설정하여 업데이트한 키를 사용해야 합니다. 방법:

  1. 구성 탭에서 해당 로깅 기능을 끄기로 설정합니다. 설정을 저장합니다.
  2. 스토리지 계정 Blob에 로깅을 다시 사용합니다. 설정을 저장합니다.

완료되면 저장을 선택합니다.

참고 항목

Blob에 로그를 작성하는 경우 앱을 삭제하고 Blob에 로그를 유지하는 경우 보존 정책이 더 이상 적용되지 않습니다. 자세한 내용은 리소스 삭제 후 발생할 수 있는 비용을 참조하세요.

자세한 오류 로그

Azure Portal에서 Windows 앱에 대한 오류 페이지 또는 실패한 요청 추적을 저장하려면 앱으로 이동하여 App Service 로그를 선택합니다.

자세한 오류 로깅 또는 실패한 요청 추적에서 켜기를 선택한 다음, 저장을 선택합니다.

두 로그 유형 모두 App Service 파일 시스템에 저장됩니다. 최대 50건의 오류(파일/폴더)가 보존됩니다. HTML 파일 수가 50개를 초과하면 가장 오래된 오류 파일이 자동으로 삭제됩니다.

실패한 요청 추적 기능은 기본적으로 400에서 600 사이의 HTTP 상태 코드로 실패한 요청 로그를 캡처합니다. 사용자 지정 규칙을 지정하려면 web.config 파일의 <traceFailedRequests> 섹션을 재정의할 수 있습니다.

코드에 로그 메시지 추가

애플리케이션 코드에서 일반적인 로깅 기능을 사용해 애플리케이션 로그에 로그 메시지를 보냅니다. 예시:

로그 스트리밍

로그를 실시간으로 스트리밍하기 전에 원하는 로그 유형을 사용하도록 설정합니다. 콘솔 출력에 기록되거나 /home/LogFiles 디렉터리(D:\home\LogFiles)에 저장된 .txt, .log 또는 .htm으로 끝나는 파일에 기록된 모든 정보는 App Service를 통해 스트림됩니다.

참고 항목

일부 유형의 로깅 버퍼는 로그 파일에 기록하고 이로 인해 스크림에서 이벤트가 작동하지 않을 수 있습니다. 예를 들어 사용자가 페이지를 방문할 때 발생한 애플리케이션 로그 항목이 페이지 요청에 대한 해당 HTTP 로그 항목보다 먼저 스트림에 표시될 수 있습니다.

Azure Portal에서

Azure Portal에서 로그를 스트리밍하려면 앱으로 이동하여 로그 스트리밍을 선택합니다.

Cloud Shell에서

로그를 Cloud Shell에서 라이브로 스트리밍하려면 다음 명령을 사용합니다.

Important

이 명령은 Linux 앱 서비스 계획에서 호스트되는 웹앱에서는 작동하지 않을 수 있습니다.

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

HTTP와 같은 특정 로그 유형을 필터링하려면 --Provider 매개 변수를 사용합니다. 예시:

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

로컬 터미널에서

로컬 콘솔에서 로그를 스트리밍하려면 Azure CLI를 설치하고 계정에 로그인합니다. 로그인한 후에는 Cloud Shell 지침을 따릅니다.

로그 파일 액세스

로그 유형에 대한 Azure Storage BLOB 옵션을 구성하는 경우 Azure Storage에서 작동하는 클라이언트 도구가 필요합니다. 자세한 내용은 Azure Storage 클라이언트 도구를 참조하세요.

App Service 파일 시스템에 저장된 로그의 경우 브라우저에서 ZIP 파일을 다운로드하는 가장 쉬운 방법은 다음과 같습니다.

  • Linux/사용자 지정 컨테이너: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Windows 앱: https://<app-name>.scm.azurewebsites.net/api/dump

Linux/사용자 지정 컨테이너의 경우 ZIP 파일에는 docker 호스트와 docker 컨테이너 양쪽의 콘솔 출력 로그가 포함되어 있습니다. 스케일 아웃된 앱의 경우 ZIP 파일에는 각 인스턴스에 대한 로그 집합이 하나 포함됩니다. App Service 파일 시스템에서 해당 로그 파일은 /home/LogFiles 디렉터리의 콘텐츠입니다.

Windows 앱의 경우 ZIP 파일에는 App Service 파일 시스템의 D:\Home\LogFiles 디렉터리의 콘텐츠가 포함되어 있습니다. 구조는 다음과 같습니다.

로그 형식 디렉터리 설명
애플리케이션 로그 /LogFiles/Application/ 하나 이상의 텍스트 파일을 포함합니다. 로그 메시지의 형식은 사용하는 로깅 공급자에 따라 달라 집니다.
실패한 요청 추적 /LogFiles/W3SVC#########/ XML 파일 및 XSL 파일을 포함합니다. 브라우저에서 형식이 지정된 XML 파일을 볼 수 있습니다.
자세한 오류 로그 /LogFiles/DetailedErrors/ HTM 오류 파일이 포함되어 있습니다. 브라우저에서 HTM 파일을 볼 수 있습니다.
실패한 요청 추적을 보는 또 다른 방법은 포털에서 앱 페이지로 이동하는 것입니다. 왼쪽 메뉴에서 문제 진단 및 해결을 선택하고 실패한 요청 추적 로그를 검색한 다음 아이콘을 클릭하여 원하는 추적을 확인합니다.
웹 서버 로그 /LogFiles/http/RawLogs/ W3C 확장 로그 파일 형식을 사용하여 서식이 지정된 텍스트 파일이 포함되어 있습니다. 이 정보는 텍스트 편집기나 로그 파서 같은 유틸리티를 사용하여 읽을 수 있습니다.
App Service는 s-computername, s-ip, 또는 cs-version 필드를 지원하지 않습니다.
배포 로그 /LogFiles/Git//deployments/ Git 배포용 로그와 내부 배포 프로세스로 생성된 로그가 포함되어 있습니다.

Azure Monitor로 로그 보내기

Azure Monitor 통합을 사용하여 진단 설정을 만들어 Storage Accounts, Event Hubs 및 Log Analytics에 로그를 보낼 수 있습니다.

진단 설정

지원되는 로그 유형

다음 표에서는 지원되는 로그 유형 및 그 설명을 표시합니다.

로그 이름 로그 형식 Windows Windows 컨테이너 Linux Linux 컨테이너 설명
App Service 콘솔 로그 AppServiceConsoleLogs Java SE & Tomcat 표준 출력 및 표준 오류 3
HTTP 로그 AppServiceHTTPLogs 웹 서버 로그
App Service Environment 플랫폼 로그 AppServiceEnvironmentPlatformLogs 해당 없음 App Service Environment: 크기 조정, 구성 변경 및 상태 로그
감사 로그 액세스 AppServiceAuditLogs FTP 및 Kudu를 통한 로그인 작업
사이트 콘텐츠 변경 감사 로그 AppServiceFileAuditLogs TBA TBA 사이트 콘텐츠 대상의 파일 변경 내용(프리미엄 계층 이상에서만 사용 가능)
App Service 애플리케이션 로그 AppServiceAppLogs ASP.NET, .NET Core 및 Tomcat 1 ASP.NET & Tomcat 1 .NET Core, Java, SE 및 Tomcat Blessed Images 2 Java SE & Tomcat Blessed Images2 애플리케이션 로그 3
IPSecurity 감사 로그 AppServiceIPSecAuditLogs IP 규칙에서 보낸 요청
App Service 플랫폼 로그 AppServicePlatformLogs TBA 컨테이너 작업 로그
바이러스 백신 감사 로그 보고 AppServiceAntivirusScanAuditLogs 4 클라우드용 Microsoft Defender를 사용한 바이러스 백신 검사 로그(프리미엄 계층만 사용 가능)

1 Tomcat 앱의 경우 앱 설정에 TOMCAT_USE_STARTUP_BAT를 추가하고 false 또는 0으로 설정합니다. 최신 Tomcat 버전에 있어야 하며 java.util.logging을 사용해야 합니다.

2 Java SE 앱의 경우 앱 설정에 WEBSITE_AZMON_PREVIEW_ENABLED를 추가하고 true 또는 1로 설정합니다.

3 현재 로깅 제한은 분당 100개의 로그로 설정됩니다.

4 AppServiceAntivirusScanAuditLogs 로그 형식은 현재 여전히 미리 보기로 제공됩니다.

네트워킹 고려 사항

진단 설정 제한은 대상 제한에 대한 공식 진단 설정 설명서를 참조하세요.

다음 단계