Visual Studio를 사용하여 Azure App Service에서 웹앱 문제 해결Troubleshoot a web app in Azure App Service using Visual Studio

개요Overview

이 사용설명서에서는 원격으로 디버그 모드를 실행하거나 응용 프로그램 로그 및 웹 서버 로그를 확인하여 App Service에서 웹앱을 디버그할 수 있는 Visual Studio 도구를 사용하는 방법을 보여줍니다.This tutorial shows how to use Visual Studio tools to help debug a web app in App Service, by running in debug mode remotely or by viewing application logs and web server logs.

참고

이 문서는 웹앱을 참조하지만 API 앱 및 모바일 앱에도 적용됩니다.Although this article refers to web apps, it also applies to API apps and mobile apps.

다음 내용을 배웁니다.You'll learn:

  • Visual Studio에서 사용할 수 있는 Azure 웹 앱 관리 기능Which Azure web app management functions are available in Visual Studio.
  • Visual Studio 원격 뷰를 사용하여 원격 웹 앱에서 빠르게 변경하는 방법How to use Visual Studio remote view to make quick changes in a remote web app.
  • 웹 앱 및 WebJob에 대해 Azure에서 프로젝트를 실행하는 동안 원격으로 디버그 모드를 실행하는 방법How to run debug mode remotely while a project is running in Azure, both for a web app and for a WebJob.
  • 응용 프로그램 추적 로그를 만드는 방법 및 해당 로그가 생성될 때 이를 보는 방법How to create application trace logs and view them while the application is creating them.
  • 자세한 오류 메시지 및 실패한 요청 추적 등의 웹 서버 로그를 보는 방법.How to view web server logs, including detailed error messages and failed request tracing.
  • 진단 로그를 Azure Storage 계정으로 보내고 해당 위치에서 로그를 보는 방법How to send diagnostic logs to an Azure Storage account and view them there.

Visual Studio Ultimate가 있으면 디버깅에 IntelliTrace 를 사용할 수도 있습니다.If you have Visual Studio Ultimate, you can also use IntelliTrace for debugging. IntelliTrace는 이 사용설명서에서 다루지 않습니다.IntelliTrace is not covered in this tutorial.

필수 조건Prerequisites

이 사용설명서에서는 Azure 및 ASP.NET 시작에서 설정한 개발 환경, 웹 프로젝트 및 Azure 웹앱에 적용됩니다.This tutorial works with the development environment, web project, and Azure web app that you set up in Get started with Azure and ASP.NET. WebJobs 섹션의 경우 Azure WebJobs SDK 시작에서 만든 응용 프로그램이 필요합니다.For the WebJobs sections, you'll need the application that you create in Get Started with the Azure WebJobs SDK.

이 사용설명서에 제시된 코드 샘플은 C# MVC 웹 응용 프로그램용이지만 문제 해결 절차는 Visual Basic 및 Web Forms 응용 프로그램에도 동일하게 적용됩니다. The code samples shown in this tutorial are for a C# MVC web application, but the troubleshooting procedures are the same for Visual Basic and Web Forms applications.

이 사용설명서는 Visual Studio 2017을 사용한다고 가정합니다.The tutorial assumes you're using Visual Studio 2017.

로그 스트리밍 기능은 .NET Framework 4 이상을 대상으로 하는 응용 프로그램에서만 작동합니다.The streaming logs feature only works for applications that target .NET Framework 4 or later.

웹 앱 구성 및 관리Web app configuration and management

Visual Studio를 사용하면 Azure Portal에서 사용할 수 있는 웹앱 관리 기능 및 구성 설정의 일부에 액세스할 수 있습니다.Visual Studio provides access to a subset of the web app management functions and configuration settings available in the Azure portal. 이 섹션에서는 서버 탐색기를 사용하여 사용할 수 있는 기능에 대해 알아봅니다.In this section, you'll see what's available by using Server Explorer. 최신 Azure 통합 기능을 확인하려면 클라우드 탐색기 도 사용해 보십시오.To see the latest Azure integration features, try out Cloud Explorer also. 보기 메뉴에서 두 창을 모두 열 수 있습니다.You can open both windows from the View menu.

  1. Visual Studio에서 Azure에 아직 로그인하지 않은 경우 Azure를 마우스 오른쪽 단추로 클릭하고 서버 탐색기에서 Microsoft Azure 구독에 연결을 선택합니다.If you aren't already signed in to Azure in Visual Studio, right-click Azure and select Connect to Microsoft Azure Subscription in Server Explorer.

    계정에 액세스할 수 있게 해 주는 또 다른 방법은 관리 인증서를 설치하는 것입니다.An alternative is to install a management certificate that enables access to your account. 인증서를 설치하도록 선택한 경우 서버 탐색기에서 Azure 노드를 마우스 오른쪽 단추로 클릭한 다음 상황에 맞는 메뉴에서 구독 관리 및 필터링을 선택합니다.If you choose to install a certificate, right-click the Azure node in Server Explorer, and then select Manage and Filter Subscriptions in the context menu. Microsoft Azure 구독 관리 대화 상자에서 인증서 탭을 클릭한 후 가져오기를 클릭합니다.In the Manage Microsoft Azure Subscriptions dialog box, click the Certificates tab, and then click Import. 지침에 따라 Azure 계정에 대한 구독 파일( .publishsettings 파일이라고도 함)을 다운로드하고 가져옵니다.Follow the directions to download and then import a subscription file (also called a .publishsettings file) for your Azure account.

    참고

    구독 파일을 다운로드한 경우 소스 코드 디렉터리의 외부 폴더(예: Downloads 폴더)에 구독 파일을 저장한 다음 가져오기가 완료되면 해당 파일을 삭제합니다.If you download a subscription file, save it to a folder outside your source code directories (for example, in the Downloads folder), and then delete it once the import has completed. 악의적인 사용자가 구독 파일에 액세스할 경우 Azure 서비스를 편집, 생성 및 삭제할 수 있습니다.A malicious user who gains access to the subscription file can edit, create, and delete your Azure services.

    Visual Studio에서 Azure 리소스에 연결하는 방법에 대한 자세한 내용은 계정, 구독 및 관리 역할 관리를 참조하세요.For more information about connecting to Azure resources from Visual Studio, see Manage Accounts, Subscriptions, and Administrative Roles.

  2. 서버 탐색기에서 Azure를 확장한 후 App Service를 확장합니다.In Server Explorer, expand Azure and expand App Service.
  3. [Azure에서 ASP.NET 웹앱 만들기][app-service-web-get-started-dotnet.md]에서 만든 웹앱을 포함하는 리소스 그룹을 확장한 다음 웹앱 노드를 마우스 오른쪽 단추로 클릭하고 설정 보기를 클릭합니다.Expand the resource group that includes the web app that you created in [Create an ASP.NET web app in Azure][app-service-web-get-started-dotnet.md], and then right-click the web app node and click View Settings.

    서버 탐색기에서 설정 보기

    Azure 웹 앱 탭이 나타나면 이 탭에서 Visual Studio에서 사용할 수 있는 웹 앱 관리 및 구성 작업이 무엇인지 확인할 수 있습니다.The Azure Web App tab appears, and you can see there the web app management and configuration tasks that are available in Visual Studio.

    Azure 웹 앱 창

    이 사용설명서에서는 로깅 및 추적 드롭다운을 사용합니다.In this tutorial, you'll use the logging and tracing drop-downs. 원격 디버깅도 사용하지만 다른 방법을 사용하여 이를 사용하도록 설정합니다.You'll also use remote debugging but you'll use a different method to enable it.

    이 창에 있는 응용 프로그램 설정 및 연결 문자열 상자에 대한 자세한 내용은 Azure Web Apps: 응용 프로그램 문자열 및 연결 문자열 작동 방식을 참조하세요.For information about the App Settings and Connection Strings boxes in this window, see Azure Web Apps: How Application Strings and Connection Strings Work.

    이 창에서 지원하지 않는 웹앱 관리 작업을 수행하려는 경우 관리 포털에서 열기 를 클릭하여 브라우저 창에서 Azure 포털을 엽니다.If you want to perform a web app management task that can't be done in this window, click Open in Management Portal to open a browser window to the Azure portal.

서버 탐색기에서 웹 앱 파일 액세스Access web app files in Server Explorer

일반적으로 Web.config 파일에서 customErrors 플래그를 On 또는 RemoteOnly로 설정한 상태로 웹 프로젝트가 배포되기 때문에 문제가 발생한 경우 유용한 오류 메시지를 받지 못합니다.You typically deploy a web project with the customErrors flag in the Web.config file set to On or RemoteOnly, which means you don't get a helpful error message when something goes wrong. 받을 수 있는 대부분의 오류는 다음 중 하나와 유사합니다.For many errors, all you get is a page like one of the following ones:

'/' 응용 프로그램의 서버 오류:Server Error in '/' Application:

도움이 되지 않는 오류 메시지

오류가 발생했습니다.An error occurred:

도움이 되지 않는 오류 메시지

웹 사이트에서 페이지를 표시할 수 없습니다.The website cannot display the page

도움이 되지 않는 오류 메시지

오류의 원인을 찾는 가장 쉬운 방법은 주로 자세한 오류 메시지를 사용하도록 설정하는 것입니다. 이전 스크린샷 중 첫 번째 스크린샷에 그 방법이 설명되어 있습니다.Frequently the easiest way to find the cause of the error is to enable detailed error messages, which the first of the preceding screenshots explains how to do. 배포된 Web.config 파일의 변경이 필요합니다.That requires a change in the deployed Web.config file. 프로젝트에서 Web.config 파일을 편집한 후 프로젝트를 다시 배포하거나 Web.config 변환을 만들고 디버그 빌드를 배포할 수도 있지만 더 빠른 방법이 있습니다. 솔루션 탐색기에서 원격 보기 기능을 사용하면 원격 웹앱의 파일을 직접 보고 편집할 수 있습니다.You could edit the Web.config file in the project and redeploy the project, or create a Web.config transform and deploy a debug build, but there's a quicker way: in Solution Explorer, you can directly view and edit files in the remote web app by using the remote view feature.

  1. 서버 탐색기에서 Azure, App Service, 웹앱이 있는 리소스 그룹, 웹앱의 노드를 차례로 확장합니다.In Server Explorer, expand Azure, expand App Service, expand the resource group that your web app is located in, and then expand the node for your web app.

    표시되는 노드를 통해 웹 앱의 콘텐츠 파일 및 로그 파일에 액세스할 수 있습니다.You see nodes that give you access to the web app's content files and log files.

  2. 파일 노드를 확장하고 Web.config 파일을 두 번 클릭합니다.Expand the Files node, and double-click the Web.config file.

    Web.config 열기

    원격 웹앱의 Visual Studio에서 Web.config 파일이 열리고 제목 표시줄의 파일 이름 옆에 [원격]이 표시됩니다.Visual Studio opens the Web.config file from the remote web app and shows [Remote] next to the file name in the title bar.

  3. system.web 요소에 다음 줄을 추가합니다.Add the following line to the system.web element:

    <customErrors mode="Off"></customErrors>

    Web.config 편집

  4. 도움이 되지 않는 오류 메시지가 표시된 브라우저를 새로 고칩니다. 이제 다음 예와 같이 자세한 오류 메시지가 표시됩니다.Refresh the browser that is showing the unhelpful error message, and now you get a detailed error message, such as the following example:

    자세한 오류 메시지

    (표시된 오류는 빨간색으로 표시된 줄이 Views\Home\Index.cshtml에 추가되어 생성됨)(The error shown was created by adding the line shown in red to Views\Home\Index.cshtml.)

Web.config 파일을 편집하는 방법은 문제를 더 쉽게 해결할 수 있도록 Azure 웹 앱의 파일 읽기/편집 기능을 사용하는 한 가지 예에 지나지 않습니다.Editing the Web.config file is only one example of scenarios in which the ability to read and edit files on your Azure web app make troubleshooting easier.

원격 디버깅 웹 앱Remote debugging web apps

자세한 오류 메시지에 충분한 정보가 제공되지 않은 경우 로컬로 오류를 다시 만들 수는 없습니다. 이때 문제를 해결하는 또 다른 방법은 원격으로 디버그 모드에서 실행하는 것입니다.If the detailed error message doesn't provide enough information, and you can't re-create the error locally, another way to troubleshoot is to run in debug mode remotely. 중단점을 설정하고 메모리를 직접 조작하며 코드를 단계별로 실행하고 심지어 코드 경로를 변경할 수 있습니다.You can set breakpoints, manipulate memory directly, step through code, and even change the code path.

원격 디버깅은 Visual Studio의 Express Edition에서 작동하지 않습니다.Remote debugging does not work in Express editions of Visual Studio.

이 섹션에서는 Azure에서 ASP.NET 웹앱 만들기에서 만든 프로젝트를 사용하여 원격으로 디버그하는 방법을 보여 줍니다.This section shows how to debug remotely using the project you create in Create an ASP.NET web app in Azure.

  1. Azure에서 ASP.NET 웹앱 만들기에서 만든 웹 프로젝트를 엽니다.Open the web project that you created in Create an ASP.NET web app in Azure.

  2. Controllers\HomeController.cs를 엽니다.Open Controllers\HomeController.cs.

  3. About() 메서드를 삭제하고 그 자리에 다음 코드를 삽입합니다.Delete the About() method and insert the following code in its place.

public ActionResult About()
{
    string currentTime = DateTime.Now.ToLongTimeString();
    ViewBag.Message = "The current time is " + currentTime;
    return View();
}
  1. ViewBag.Message 줄에 중단점을 설정합니다.Set a breakpoint on the ViewBag.Message line.

  2. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.In Solution Explorer, right-click the project, and click Publish.

  3. 프로필 드롭다운 목록에서 Azure에서 ASP.NET 웹앱 만들기에서 사용한 것과 동일한 프로필을 선택합니다.In the Profile drop-down list, select the same profile that you used in Create an ASP.NET web app in Azure. 그런 후 설정을 클릭합니다.Then, click Settings.

  4. 게시 대화 상자에서 설정 탭을 클릭한 다음, 구성디버그로 변경하고 저장을 클릭합니다.In the Publish dialog, click the Settings tab, and then change Configuration to Debug, and then click Save.

    디버그 모드에서 게시

  5. 게시를 클릭합니다.Click Publish. 배포를 마치고 브라우저에 웹 앱의 Azure URL이 열리면 브라우저를 닫습니다.After deployment finishes and your browser opens to the Azure URL of your web app, close the browser.

  6. 서버 탐색기에서 웹앱을 마우스 오른쪽 단추로 클릭한 다음 디버거 연결을 클릭합니다.In Server Explorer, right-click your web app, and then click Attach Debugger.

    디버거 연결

    브라우저에 Azure에서 실행되는 홈 페이지가 자동으로 열립니다.The browser automatically opens to your home page running in Azure. Azure에서 디버깅용 서버를 설정할 때까지 약 20초 정도 기다려야 할 수 있습니다.You might have to wait 20 seconds or so while Azure sets up the server for debugging. 이 지연은 48시간 내 웹앱에서 디버그 모드를 처음 실행하는 경우에만 발생합니다.This delay only happens the first time you run in debug mode on a web app in a 48-hour period. 동일한 시간에 디버깅을 다시 시작하면 지연이 발생하지 않습니다When you start debugging again in the same period, there isn't a delay.

    참고

    디버거를 시작하는 데 문제가 있는 경우 서버 탐색기 대신 클라우드 탐색기를 사용해 보세요.If you have any trouble starting the debugger, try to do it by using Cloud Explorer instead of Server Explorer.

  7. 메뉴에서 정보 를 클릭합니다.Click About in the menu.

    Visual Studio가 중단점에서 중지되고 코드는 로컬 컴퓨터가 아닌 Azure에서 실행됩니다.Visual Studio stops on the breakpoint, and the code is running in Azure, not on your local computer.

  8. currentTime 변수를 마우스 포인터로 가리켜 시간 값을 봅니다.Hover over the currentTime variable to see the time value.

    Azure에서 실행 중인 디버그 모드의 변수 보기

    보이는 시간은 Azure 서버 시간이며 이는 로컬 컴퓨터의 표준 시간대와 다를 수 있습니다.The time you see is the Azure server time, which may be in a different time zone than your local computer.

  9. currentTime 변수에 "현재 Azure에서 실행 중" 같은 새 값을 입력합니다.Enter a new value for the currentTime variable, such as "Now running in Azure".

  10. F5 키를 눌러 계속 실행합니다.Press F5 to continue running.

    Azure에서 실행되는 정보 페이지에는 currentTime 변수에 입력한 새 값이 표시됩니다.The About page running in Azure displays the new value that you entered into the currentTime variable.

    새 값이 표시된 정보 페이지

원격 디버깅 WebJobRemote debugging WebJobs

이 섹션에서는 Azure WebJob SDK 시작에서 만든 프로젝트 및 웹 앱을 사용하여 원격으로 디버그하는 방법을 보여 줍니다This section shows how to debug remotely using the project and web app you create in Get Started with the Azure WebJobs SDK.

이 섹션에 표시된 기능은 Visual Studio 2013 업데이트 4 또는 그 이상의 버전에서만 사용할 수 있습니다.The features shown in this section are available only in Visual Studio 2013 with Update 4 or later.

연속 WebJobs에서 원격 디버깅만 작동합니다.Remote debugging only works with continuous WebJobs. 예약 및 주문형 WebJobs은 디버깅을 지원하지 않습니다.Scheduled and on-demand WebJobs don't support debugging.

  1. Azure WebJobs SDK 시작에서 만든 웹 프로젝트를 엽니다.Open the web project that you created in Get Started with the Azure WebJobs SDK.

  2. ContosoAdsWebJob 프로젝트에서 Functions.cs를 엽니다.In the ContosoAdsWebJob project, open Functions.cs.

  3. GnerateThumbnail 메서드의 첫 번째 문에 중단점을 설정합니다.Set a breakpoint on the first statement in the GnerateThumbnail method.

    중단점 설정

  4. 솔루션 탐색기에서 웹 프로젝트(WebJob 프로젝트가 아님)를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.In Solution Explorer, right-click the web project (not the WebJob project), and click Publish.

  5. 프로필 드롭다운 목록에서 Azure WebJobs SDK 시작에서 사용한 것과 같은 프로필을 선택합니다.In the Profile drop-down list, select the same profile that you used in Get Started with the Azure WebJobs SDK.

  6. 설정 탭을 클릭하고 구성디버그로 변경한 후 게시를 클릭합니다.Click the Settings tab, and change Configuration to Debug, and then click Publish.

    Visual Studio에서 웹 및 WebJob 프로젝트를 배포하며 브라우저에서 웹 앱의 Azure URL이 열립니다.Visual Studio deploys the web and WebJob projects, and your browser opens to the Azure URL of your web app.

  7. 서버 탐색기에서 Azure > App Service > 리소스 그룹 > 웹앱 > WebJobs > 연속을 확장하고 ContosoAdsWebJob을 마우스 오른쪽 단추로 클릭합니다.In Server Explorer, expand Azure > App Service > your resource group > your web app > WebJobs > Continuous, and then right-click ContosoAdsWebJob.

  8. 디버거 연결을 클릭합니다.Click Attach Debugger.

    디버거 연결

    브라우저에 Azure에서 실행되는 홈 페이지가 자동으로 열립니다.The browser automatically opens to your home page running in Azure. Azure에서 디버깅용 서버를 설정할 때까지 약 20초 정도 기다려야 할 수 있습니다.You might have to wait 20 seconds or so while Azure sets up the server for debugging. 이 지연은 48시간 내 웹앱에서 디버그 모드를 처음 실행하는 경우에만 발생합니다.This delay only happens the first time you run in debug mode on a web app in a 48-hour period. 동일한 시간에 디버깅을 다시 시작하면 지연이 발생하지 않습니다When you start debugging again in the same period, there isn't a delay.

  9. Contoso Ads 홈페이지로 열리는 웹 브라우저에서 새 광고를 만듭니다.In the web browser that is opened to the Contoso Ads home page, create a new ad.

    광고를 만들면 큐 메시지가 생성되며, WebJob에서 메시지를 선택하여 처리합니다.Creating an ad causes a queue message to be created, which is picked up by the WebJob and processed. WebJobs SDK가 큐 메시지를 처리할 함수를 호출하면 코드가 중단점에 도달합니다.When the WebJobs SDK calls the function to process the queue message, the code hits your breakpoint.

  10. 디버거가 중단점에서 중단되면 프로그램이 클라우드에서 실행되는 동안 변수 값을 검사하고 변경할 수 있습니다.When the debugger breaks at your breakpoint, you can examine and change variable values while the program is running the cloud. 다음 그림에서 디버거는 GenerateThumbnail 메서드로 전달된 blobInfo 개체의 내용을 보여 줍니다.In the following illustration, the debugger shows the contents of the blobInfo object that was passed to the GenerateThumbnail method.

    디버거에서 blobInfo 개체

  11. F5 키를 눌러 계속 실행합니다.Press F5 to continue running.

    GenerateThumbnail 메서드가 미리 보기 만들기를 완료합니다.The GenerateThumbnail method finishes creating the thumbnail.

  12. 브라우저에서 인덱스 페이지를 새로 고치면 미리 보기가 표시됩니다.In the browser, refresh the Index page and you see the thumbnail.

  13. Visual Studio에서 디버깅을 중지하려면 SHIFT+F5를 누릅니다.In Visual Studio, press SHIFT+F5 to stop debugging.

  14. 서버 탐색기에서 ContosoAdsWebJob 노드를 마우스 오른쪽 단추로 클릭하고 대시보드 보기를 클릭합니다.In Server Explorer, right-click the ContosoAdsWebJob node and click View Dashboard.

  15. Azure 자격 증명을 사용하여 로그인한 다음 WebJob 이름을 클릭하여 WebJob 페이지로 이동합니다.Sign in with your Azure credentials, and then click the WebJob name to go to the page for your WebJob.

    ContosoAdsWebJob 클릭

    대시보드에서 GenerateThumbnail 함수 대시보드가 최근에 실행되었음을 확인할 수 있습니다.The Dashboard shows that the GenerateThumbnail function executed recently.

    (다음에 대시보드 보기를 클릭하면 로그인할 필요가 없고 브라우저가 바로 WebJob에 대한 페이지로 이동합니다.)(The next time you click View Dashboard, you don't have to sign in, and the browser goes directly to the page for your WebJob.)

  16. 함수 이름을 클릭하여 함수 실행에 대한 세부 정보를 확인합니다.Click the function name to see details about the function execution.

    함수 정보

함수에서 로그가 작성되었으면 ToggleOutput 을 클릭하여 확인할 수 있습니다.If your function wrote logs, you could click ToggleOutput to see them.

원격 디버깅 관련 참고 사항Notes about remote debugging

  • 프로덕션 사이트에서 디버그 모드로 실행하는 것은 권장되지 않습니다.Running in debug mode in production is not recommended. 프로덕션 웹 앱이 여러 서버 인스턴스로 확장되지 않은 경우 디버깅으로 인해 웹 서버에서 다른 요청에 응답할 수 없습니다.If your production web app is not scaled out to multiple server instances, debugging prevents the web server from responding to other requests. 여러 웹 서버 인스턴스를 배포하여 이들을 디버거에 연결한 경우 디버깅은 임의 인스턴스에서 실행되므로 후속 브라우저 요청이 동일한 인스턴스로 이동하도록 보장할 수 있는 방법이 없습니다.If you do have multiple web server instances, when you attach to the debugger, you get a random instance, and you have no way to ensure that subsequent browser requests go to the same instance. 또한 일반적으로는 프로덕션 사이트에 디버그 빌드를 배포하지 않는데 이는 릴리스 빌드용 컴파일러 최적화로 인해 현재 진행되는 상황이 소스 코드에 자세히 표시되는 것이 불가능하기 때문입니다.Also, you typically don't deploy a debug build to production, and compiler optimizations for release builds might make it impossible to show what is happening line by line in your source code. 프로덕션 문제를 해결하는 데는 응용 프로그램 추적 및 웹 서버 로그가 최적의 리소스입니다.For troubleshooting production problems, your best resource is application tracing and web server logs.
  • 원격 디버깅 시 중단점에서 장시간 중지하지 않도록 합니다.Avoid long stops at breakpoints when remote debugging. 몇 분 이상 중지된 프로세스는 Azure에서 응답하지 않는 프로세스로 간주되어 종료되기 때문입니다.Azure treats a process that is stopped for longer than a few minutes as an unresponsive process, and shuts it down.
  • 디버그하는 동안 서버는 데이터를 Visual Studio로 보내며, 이로 인해 대역폭 사용 요금에 영향을 줄 수 있습니다.While you're debugging, the server is sending data to Visual Studio, which could affect bandwidth charges. 대역폭 요금에 대한 자세한 내용은 Azure 가격 책정을 참조하십시오.For information about bandwidth rates, see Azure Pricing.
  • Web.config 파일에서 compilation 요소의 debug 특성이 true로 설정되어 있어야 합니다.Make sure that the debug attribute of the compilation element in the Web.config file is set to true. 디버그 빌드 구성을 게시하면 기본적으로 true로 설정됩니다.It is set to true by default when you publish a debug build configuration.
<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />
</system.web>
  • 디버거에서 디버그하려는 코드가 단계별로 실행되지 않는 경우 "내 코드만" 설정을 변경해야 할 수 있습니다.If you find that the debugger doesn't step into the code that you want to debug, you might have to change the Just My Code setting. 자세한 내용은 단계별 코드 실행을 내 코드만으로 제한을 참조하십시오.For more information, see Restrict stepping to Just My Code.
  • 원격 디버깅 기능을 사용하도록 설정하면 서버의 타이머가 시작되고 48시간 후 기능이 자동으로 꺼집니다.A timer starts on the server when you enable the remote debugging feature, and after 48 hours the feature is automatically turned off. 이 48시간 제한은 보안 및 성능상의 이유로 제한됩니다.This 48-hour limit is done for security and performance reasons. 원하는 횟수만큼 기능을 쉽게 다시 켤 수 있습니다.You can easily turn the feature back on as many times as you like. 디버깅을 활발히 사용하지 않는 경우 이를 사용하지 않는 상태로 두는 것이 좋습니다.We recommend leaving it disabled when you are not actively debugging.
  • 웹 앱 프로세스(w3wp.exe)뿐만 아니라 모든 프로세스에 디버거를 수동으로 연결할 수 있습니다.You can manually attach the debugger to any process, not only the web app process (w3wp.exe). Visual Studio에서 디버그 모드를 사용하는 방법에 대한 자세한 내용은 Visual Studio의 디버깅을 참조하십시오.For more information about how to use debug mode in Visual Studio, see Debugging in Visual Studio.

진단 로그 개요Diagnostic logs overview

Azure 웹 앱에서 실행하는 ASP.NET 응용 프로그램은 다음과 같은 종류의 로그를 생성할 수 있습니다.An ASP.NET application that runs in an Azure web app can create the following kinds of logs:

  • 응용 프로그램 추적 로그Application tracing logs
    응용 프로그램은 System.Diagnostics.Trace 클래스의 메서드를 호출하여 추적 로그를 생성합니다.The application creates these logs by calling methods of the System.Diagnostics.Trace class.
  • 웹 서버 로그Web server logs
    웹 서버는 웹 앱에 대한 모든 HTTP 요청에 대해 로그 항목을 생성합니다.The web server creates a log entry for every HTTP request to the web app.
  • 자세한 오류 메시지 로그Detailed error message logs
    웹 서버는 실패한 HTTP 요청(상태 코드 400 이상을 발생하는 요청)에 대해 일부 추가 정보가 수록된 HTML 페이지를 생성합니다.The web server creates an HTML page with some additional information for failed HTTP requests (requests that result in status code 400 or greater).
  • 실패한 요청 추적 로그Failed request tracing logs
    웹 서버는 실패한 HTTP 요청에 대한 자세한 추적 정보가 수록된 XML 파일을 생성합니다.The web server creates an XML file with detailed tracing information for failed HTTP requests. 또한 웹 서버는 브라우저에서 XML 파일 형식으로 지정할 수 있도록 XSL 파일도 제공합니다.The web server also provides an XSL file to format the XML in a browser.

로깅 기능을 사용하면 웹 앱 성능에 영향을 미칠 수 있으므로 Azure에서는 필요에 따라 각 로그 유형을 사용 또는 사용하지 않도록 설정할 수 있는 기능이 제공됩니다.Logging affects web app performance, so Azure gives you the ability to enable or disable each type of log as needed. 응용 프로그램 로그의 경우 특정 심각도 이상의 로그만 작성되도록 지정할 수 있습니다.For application logs, you can specify that only logs above a certain severity level should be written. 새 웹 앱을 만들 때 기본적으로 모든 로깅은 사용하지 않도록 설정됩니다.When you create a new web app, by default all logging is disabled.

로그는 웹 앱의 파일 시스템에 있는 LogFiles 폴더의 파일에 기록되며 FTP를 통해 액세스할 수 있습니다.Logs are written to files in a LogFiles folder in the file system of your web app and are accessible via FTP. 웹 서버 로그 및 응용 프로그램 로그는 또한 Azure Storage 계정에도 기록될 수 있습니다.Web server logs and application logs can also be written to an Azure Storage account. 저장소 계정에서는 파일 시스템에서 보존할 수 있는 로그보다 훨씬 많은 볼륨의 로그를 보존할 수 있습니다.You can retain a greater volume of logs in a storage account than is possible in the file system. 파일 시스템을 사용하는 경우 최대 100MB의 로그로 제한됩니다.You're limited to a maximum of 100 megabytes of logs when you use the file system. 참고로, 파일 시스템 로그는 단기 보존용입니다.(File system logs are only for short-term retention. 제한값에 도달한 경우 Azure는 새 로그를 위한 공간을 만들기 위해 오래된 로그 파일을 삭제합니다.Azure deletes old log files to make room for new ones after the limit is reached.)

응용 프로그램 추적 로그 만들기 및 보기Create and view application trace logs

이 섹션에서는 다음 작업을 수행합니다.In this section, you do the following tasks:

  • Azure 및 ASP.NET 시작에서 만든 웹 프로젝트에 추적 문을 추가합니다.Add tracing statements to the web project that you created in Get started with Azure and ASP.NET.
  • 프로젝트를 로컬로 실행하는 경우 로그 보기View the logs when you run the project locally.
  • Azure에서 실행하는 응용 프로그램에서 생성된 로그 보기View the logs as they are generated by the application running in Azure.

WebJob에서 응용 프로그램을 만드는 방법에 대한 자세한 내용은 WebJobs SDK를 사용하여 Azure 큐 저장소 작업을 하는 방법 - 로그를 쓰는 방법을 참조하세요.For information about how to create application logs in WebJobs, see How to work with Azure queue storage using the WebJobs SDK - How to write logs. 로그를 보고 Azure에 저장하는 방법을 제어하기 위한 다음 지침은 WebJob에서 만들어진 응용 프로그램 로그에도 적용됩니다.The following instructions for viewing logs and controlling how they're stored in Azure apply also to application logs created by WebJobs.

응용 프로그램에 추적 문 추가Add tracing statements to the application

  1. Controllers\HomeController.cs를 열고 Index, About, Contact 메서드를 다음 코드로 바꾸어 System.Diagnostics에 대해 Trace 문과 using 문을 추가합니다.Open Controllers\HomeController.cs, and replace the Index, About, and Contact methods with the following code in order to add Trace statements and a using statement for System.Diagnostics:
public ActionResult Index()
{
    Trace.WriteLine("Entering Index method");
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
    Trace.TraceInformation("Displaying the Index page at " + DateTime.Now.ToLongTimeString());
    Trace.WriteLine("Leaving Index method");
    return View();
}

public ActionResult About()
{
    Trace.WriteLine("Entering About method");
    ViewBag.Message = "Your app description page.";
    Trace.TraceWarning("Transient error on the About page at " + DateTime.Now.ToShortTimeString());
    Trace.WriteLine("Leaving About method");
    return View();
}

public ActionResult Contact()
{
    Trace.WriteLine("Entering Contact method");
    ViewBag.Message = "Your contact page.";
    Trace.TraceError("Fatal error on the Contact page at " + DateTime.Now.ToLongTimeString());
    Trace.WriteLine("Leaving Contact method");
    return View();
}        
  1. 파일 맨 위에 using System.Diagnostics; 문을 추가합니다.Add a using System.Diagnostics; statement to the top of the file.

로컬에서 추적 출력 보기View the tracing output locally

  1. F5 키를 눌러 디버그 모드에서 응용 프로그램을 실행합니다.Press F5 to run the application in debug mode.

    기본 추적 수신기는 모든 추적 출력을 다른 디버그 출력과 함께 출력 창에 기록합니다.The default trace listener writes all trace output to the Output window, along with other Debug output. 다음 그림에서는 Index 메서드에 추가한 trace 문의 출력을 보여줍니다.The following illustration shows the output from the trace statements that you added to the Index method.

    디버그 창의 추적

    다음 단계는 디버그 모드에서 컴파일하지 않고 웹 페이지에서 추적 출력을 보는 방법을 보여 줍니다.The following steps show how to view trace output in a web page, without compiling in debug mode.

  2. 프로젝트 폴더에 위치한 응용 프로그램 Web.config 파일을 열고 파일 끝에 있는 닫는 <system.diagnostics> 요소 바로 앞에 </configuration> 요소를 추가합니다.Open the application Web.config file (the one located in the project folder) and add a <system.diagnostics> element at the end of the file just before the closing </configuration> element:
<system.diagnostics>
<trace>
  <listeners>
    <add name="WebPageTraceListener"
        type="System.Web.WebPageTraceListener,
        System.Web,
        Version=4.0.0.0,
        Culture=neutral,
        PublicKeyToken=b03f5f7f11d50a3a" />
  </listeners>
</trace>
</system.diagnostics>

WebPageTraceListener를 사용하면 /trace.axd로 이동하여 추적 출력을 확인할 수 있습니다.The WebPageTraceListener lets you view trace output by browsing to /trace.axd.

  1. Web.config 파일의 <system.web> 아래에 trace 요소를 다음 예와 같이 추가합니다.Add a trace element under <system.web> in the Web.config file, such as the following example:
<trace enabled="true" writeToDiagnosticsTrace="true" mostRecent="true" pageOutput="false" />
  1. Ctrl+F5를 눌러 응용 프로그램을 실행합니다.Press CTRL+F5 to run the application.
  2. 브라우저 창의 주소 표시줄에서 trace.axd를 URL에 추가한 후 Enter 키를 누릅니다. URL은 http://localhost:53370/trace.axd)과 유사합니다.In the address bar of the browser window, add trace.axd to the URL, and then press Enter (the URL is similar to http://localhost:53370/trace.axd).
  3. 응용 프로그램 추적 페이지에서 BrowserLink 줄이 아니라 첫 번째 줄의 세부 정보 보기를 클릭합니다.On the Application Trace page, click View Details on the first line (not the BrowserLink line).

    trace.axd

    요청 세부 정보 페이지가 나타나며, 추적 정보 섹션에서 Index 메서드에 추가한 trace 문의 출력을 확인합니다.The Request Details page appears, and in the Trace Information section you see the output from the trace statements that you added to the Index method.

    trace.axd

    기본적으로 trace.axd 는 로컬에서만 사용할 수 있습니다.By default, trace.axd is only available locally. 원격 웹앱에서 사용할 수 있도록 하려면, 다음 예에 표시된 것처럼 Web.config 파일의 trace 요소에 localOnly="false"를 추가하면 됩니다.If you wanted to make it available from a remote web app, you could add localOnly="false" to the trace element in the Web.config file, as shown in the following example:

     <trace enabled="true" writeToDiagnosticsTrace="true" localOnly="false" mostRecent="true" pageOutput="false" />
    

    그러나 프로덕션 웹앱에서 trace.axd를 사용하도록 설정하는 것은 보안상의 이유로 권장되지 않습니다.However, enabling trace.axd in a production web app is not recommended for security reasons. 다음 섹션에서는 Azure 웹앱에서 추적 로그를 읽는 가장 쉬운 방법을 확인할 수 있습니다.In the following sections, you'll see an easier way to read tracing logs in an Azure web app.

Azure에서 추적 출력 보기View the tracing output in Azure

  1. 솔루션 탐색기에서 웹 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.In Solution Explorer, right-click the web project and click Publish.
  2. 웹 게시 대화 상자에서 게시를 클릭합니다.In the Publish Web dialog box, click Publish.

    Visual Studio에서 업데이트가 게시된 후 연결 탭의 대상 URL의 확인란을 선택 취소하지 않은 경우 브라우저 창이 열리고 사용자의 홈 페이지가 표시됩니다.After Visual Studio publishes your update, it opens a browser window to your home page (assuming you didn't clear Destination URL on the Connection tab).

  3. 서버 탐색기에서 웹앱을 마우스 오른쪽 단추로 클릭하고 스트리밍 로그 보기를 선택합니다.In Server Explorer, right-click your web app and select View Streaming Logs.

    상황에 맞는 메뉴의 스트리밍 로그 보기

    출력 창에는 현재 로그 스트리밍 서비스에 연결되어 있음이 표시되고, 로그는 표시되지 않은 상태로 매분마다 알림 줄이 추가됩니다.The Output window shows that you are connected to the log-streaming service, and adds a notification line each minute that goes by without a log to display.

    상황에 맞는 메뉴의 스트리밍 로그 보기

  4. 응용 프로그램 홈 페이지가 표시된 브라우저 창에서 연락처를 클릭합니다.In the browser window that shows your application home page, click Contact.

    몇 초 이내에 Contact 메서드에 추가한 오류 수준의 추적에 대한 출력이 출력 창에 나타납니다.Within a few seconds, the output from the error-level trace you added to the Contact method appears in the Output window.

    출력 창의 오류 추적

    로그 모니터링 서비스를 사용하도록 설정하는 경우 오류 수준의 추적이 기본 설정이므로 Visual Studio에는 오류 수준의 추적만 표시됩니다.Visual Studio is only showing error-level traces because that is the default setting when you enable the log monitoring service. 새 Azure 웹 앱을 만드는 경우 사이트 설정에서 확인한 것처럼 모든 로깅은 기본적으로 사용하지 않도록 설정됩니다. When you create a new Azure web app, all logging is disabled by default, as you saw when you opened the settings page earlier:

    응용 프로그램 로깅 끄기

    하지만 스트리밍 로그 보기를 선택한 경우 Visual Studio는 자동으로 응용 프로그램 로깅(파일 시스템)오류로 변경합니다. 이는 오류 수준의 로그가 보고된다는 의미입니다.However, when you selected View Streaming Logs, Visual Studio automatically changed Application Logging(File System) to Error, which means error-level logs get reported. 추적 로그를 모두 보려면 이 설정을 자세한 정보 표시로 변경할 수 있습니다.In order to see all of your tracing logs, you can change this setting to Verbose. 심각도 수준을 오류보다 낮은 수준으로 선택하면 더 높은 심각도 수준의 모든 로그가 보고됩니다.When you select a severity level lower than error, all logs for higher severity levels are also reported. 따라서 자세한 정보 표시를 선택하는 경우 정보, 경고 및 오류 로그도 볼 수 있습니다.So when you select verbose, you also see information, warning, and error logs.

  5. 서버 탐색기에서 웹앱을 마우스 오른쪽 단추로 클릭하고 이전과 마찬가지로 설정 보기를 클릭합니다.In Server Explorer, right-click the web app, and then click View Settings as you did earlier.

  6. 응용 프로그램 로깅(파일 시스템)자세한 정보 표시로 변경한 후 저장을 클릭합니다.Change Application Logging (File System) to Verbose, and then click Save.

    추적 수준을 자세한 정보 표시로 설정

  7. 이제 연락처 페이지가 표시되는 브라우저 창에서 을 클릭하고 정보를 클릭한 후 연락처를 클릭합니다.In the browser window that is now showing your Contact page, click Home, then click About, and then click Contact.

    몇 초 이내에 출력 창에 추적 출력이 모두 표시됩니다.Within a few seconds, the Output window shows all of your tracing output.

    자세한 정보 표시 추적 출력

    이 섹션에서는 Azure 웹앱 설정을 사용하여 로깅을 사용 및 사용하지 않도록 설정했습니다.In this section, you enabled and disabled logging by using Azure web app settings. 또한 Web.config 파일을 수정하여 추적 수신기를 사용 또는 사용하지 않도록 설정할 수도 있습니다.You can also enable and disable trace listeners by modifying the Web.config file. 하지만 Web.config 파일을 수정하면 앱 도메인이 재순환할 수 있습니다. 반면에 웹 앱 구성을 통해 로깅을 사용하도록 설정하면 재순환하지 않습니다.However, modifying the Web.config file causes the app domain to recycle, while enabling logging via the web app configuration doesn't do that. 문제를 재현하는 데 오랜 시간이 걸리는 경우 또는 문제가 일시적인 경우 앱 도메인을 재순환하면 문제를 "해결" 할 수도 있지만 문제가 다시 발생할 때까지 강제로 대기해야 합니다.If the problem takes a long time to reproduce, or is intermittent, recycling the app domain might "fix" it and force you to wait until it happens again. Azure에서 진단을 사용하도록 설정하면 앱 도메인을 재사용하지 않고 즉시 오류 정보를 캡처하기 시작할 수 있습니다.Enabling diagnostics in Azure lets you start capturing error information immediately without recycling the app domain.

출력 창 기능Output window features

출력 창의 Microsoft Azure 로그 탭에는 여러 단추와 하나의 입력란이 있습니다.The Microsoft Azure Logs tab of the Output Window has several buttons and a text box:

로그 탭의 단추

이들은 다음 기능을 수행합니다.These perform the following functions:

  • 출력 창의 내용을 지웁니다.Clear the Output window.
  • 자동 줄 바꿈을 사용 또는 사용하지 않도록 설정합니다.Enable or disable word wrap.
  • 로그 모니터링을 시작 또는 중지합니다.Start or stop monitoring logs.
  • 모니터링할 로그를 지정합니다.Specify which logs to monitor.
  • 로그를 다운로드합니다.Download logs.
  • 검색 문자열 또는 정규식을 기반으로 로그를 필터링합니다.Filter logs based on a search string or a regular expression.
  • 출력 창을 닫습니다.Close the Output window.

검색 문자열 또는 정규식을 입력하면 Visual Studio에서 클라이언트 측의 로깅 정보가 필터링됩니다.If you enter a search string or regular expression, Visual Studio filters logging information at the client. 즉, Output 창에 로그가 표시된 후에 조건을 입력할 수 있으며 로그를 다시 생성할 필요 없이 필터링 조건을 변경할 수 있습니다.That means you can enter the criteria after the logs are displayed in the Output window and you can change filtering criteria without having to regenerate the logs.

웹 서버 로그 보기View web server logs

웹 서버 로그는 웹 앱의 모든 HTTP 작업을 기록합니다.Web server logs record all HTTP activity for the web app. 출력 창에서 웹 서버 로그를 보려면 웹 앱에서 이를 사용하도록 설정하고, Visual Studio에서 이들의 모니터링을 명시적으로 지정해야 합니다.In order to see them in the Output window, you must enable them for the web app and tell Visual Studio that you want to monitor them.

  1. 서버 탐색기에서 열었던 Azure Web App 구성 탭에서 웹 서버 로깅을 켜기로 변경하고 저장을 클릭합니다.In the Azure Web App Configuration tab that you opened from Server Explorer, change Web Server Logging to On, and then click Save.

    웹 서버 로깅 사용

  2. 출력 창에서 모니터링할 Microsoft Azure 로그 지정 버튼을 클릭합니다.In the Output Window, click the Specify which Microsoft Azure logs to monitor button.

    Specify which Azure logs to monitor

  3. Microsoft Azure 로깅 옵션 대화 상자에서 웹 서버 로그를 선택한 후 확인을 클릭합니다.In the Microsoft Azure Logging Options dialog box, select Web server logs, and then click OK.

    웹 서버 로그 모니터링

  4. 웹앱이 표시되는 브라우저 창에서 을 클릭하고 정보를 클릭한 후 연락처를 클릭합니다.In the browser window that shows the web app, click Home, then click About, and then click Contact.

    일반적으로 응용 프로그램 로그가 나타나고 다음으로 웹 서버 로그가 나타납니다.The application logs generally appear first, followed by the web server logs. 로그가 나타날 때까지 잠시 기다려야 할 수 있습니다.You might have to wait a while for the logs to appear.

    출력 창의 웹 서버 로그

기본적으로 Visual Studio를 사용하여 웹 서버 로그를 사용하도록 처음 설정하는 경우 Azure는 로그를 파일 시스템에 기록합니다.By default, when you first enable web server logs by using Visual Studio, Azure writes the logs to the file system. 또는 Azure 포털을 사용하여 웹 서버 로그가 저장소 계정의 Blob 컨테이너에 기록되도록 지정할 수 있습니다.As an alternative, you can use the Azure portal to specify that web server logs should be written to a blob container in a storage account.

포털을 사용하여 Azure 저장소 계정에 기록하도록 웹 서버 로깅을 설정한 후 Visual Studio에서 로깅을 사용하지 않도록 설정하는 경우 Visual Studio에서 로깅을 사용하도록 다시 설정하면 저장소 계정 설정이 복원됩니다.If you use the portal to enable web server logging to an Azure storage account, and then disable logging in Visual Studio, when you re-enable logging in Visual Studio your storage account settings are restored.

자세한 오류 메시지 로그 보기View detailed error message logs

자세한 오류 로그에서는 오류 응답 코드(400 이상)를 유발한 HTTP 요청과 관련된 일부 추가 정보가 제공됩니다.Detailed error logs provide some additional information about HTTP requests that result in error response codes (400 or above). 출력 창에서 웹 서버 로그를 보려면 웹 앱에서 이를 사용하도록 설정하고, Visual Studio에서 이들의 모니터링을 명시적으로 지정해야 합니다.In order to see them in the Output window, you have to enable them for the web app and tell Visual Studio that you want to monitor them.

  1. 서버 탐색기에서 열었던 Azure Web App 구성 탭에서 자세한 오류 메시지켜기로 변경하고 저장을 클릭합니다.In the Azure Web App Configuration tab that you opened from Server Explorer, change Detailed Error Messages to On, and then click Save.

    자세한 오류 메시지 사용

  2. 출력 창에서 모니터링할 Microsoft Azure 로그 지정 버튼을 클릭합니다.In the Output Window, click the Specify which Microsoft Azure logs to monitor button.

  3. Microsoft Azure 로깅 옵션 대화 상자에서 모든 로그를 클릭한 후 확인을 클릭합니다.In the Microsoft Azure Logging Options dialog box, click All logs, and then click OK.

    모든 로그 모니터링

  4. 404 오류를 유발하도록 브라우저 창의 주소 표시줄에서 추가 문자를 URL에 추가(예: http://localhost:53370/Home/Contactx)한 후 Enter를 누릅니다.In the address bar of the browser window, add an extra character to the URL to cause a 404 error (for example, http://localhost:53370/Home/Contactx), and press Enter.

    몇 초 후 Visual Studio의 출력 창에 자세한 오류 로그가 나타납니다.After several seconds, the detailed error log appears in the Visual Studio Output window.

    출력 창의 자세한 오류 로그

    Ctrl 키를 누른 채 링크를 클릭하면 브라우저에 서식이 지정된 로그 출력이 표시됩니다.Control+click the link to see the log output formatted in a browser:

    브라우저 창의 자세한 오류 로그

파일 시스템 로그 다운로드Download file system logs

출력 창에서 모니터링할 수 있는 모든 로그는 .zip 파일로 다운로드할 수도 있습니다.Any logs that you can monitor in the Output window can also be downloaded as a .zip file.

  1. 출력 창에서 스트리밍 로그 다운로드를 클릭합니다.In the Output window, click Download Streaming Logs.

    로그 탭의 단추

    파일 탐색기에서 다운로드한 파일이 선택된 상태로 Downloads 폴더가 열립니다.File Explorer opens to your Downloads folder with the downloaded file selected.

    다운로드한 파일

  2. .zip 파일의 압축을 풀면 다음 폴더 구조가 표시됩니다.Extract the .zip file, and you see the following folder structure:

    다운로드한 파일

    • 응용 프로그램 추적 로그는 LogFiles\Application 폴더에 .txt 파일로 기록됩니다.Application tracing logs are in .txt files in the LogFiles\Application folder.
    • 웹 서버 로그는 LogFiles\http\RawLogs 폴더에 .log 파일로 기록됩니다.Web server logs are in .log files in the LogFiles\http\RawLogs folder. Log Parser 같은 도구를 사용하여 이들 파일을 보고 조작할 수 있습니다.You can use a tool such as Log Parser to view and manipulate these files.
    • 자세한 오류 메시지 로그는 LogFiles\DetailedErrors 폴더에 .html 파일로 기록됩니다.Detailed error message logs are in .html files in the LogFiles\DetailedErrors folder.

      참고로, deployments 폴더는 소스 제어 게시로 인해 생성되는 것이며 Visual Studio 게시와는 전혀 관계가 없습니다.(The deployments folder is for files created by source control publishing; it doesn't have anything related to Visual Studio publishing. Git 폴더는 소스 제어 게시 및 로그 파일 스트리밍 서비스와 관련된 추적 로그용입니다.The Git folder is for traces related to source control publishing and the log file streaming service.)

실패한 요청 추적 로그 보기View failed request tracing logs

실패한 요청 추적 로그는 URL 다시 쓰기 또는 인증 문제 등이 발생하는 경우 IIS에서 HTTP 요청이 처리되는 방식을 자세히 이해해야 하는 경우에 유용합니다.Failed request tracing logs are useful when you need to understand the details of how IIS is handling an HTTP request, in scenarios such as URL rewriting or authentication problems.

Azure 웹 앱은 IIS 7.0 이상 버전에서 사용할 수 있는 실패한 요청 추적 기능을 똑같이 사용합니다.Azure web apps use the same failed request tracing functionality that has been available with IIS 7.0 and later. 하지만 기록된 오류를 구성하는 IIS 설정에 대한 액세스 권한이 없습니다.You don't have access to the IIS settings that configure which errors get logged, however. 실패한 요청 추적을 사용하도록 설정하면 모든 오류가 캡처됩니다.When you enable failed request tracing, all errors are captured.

Visual Studio를 사용하여 실패한 요청 추적을 사용하도록 설정할 수 있지만 Visual Studio에서 해당 로그를 볼 수는 없습니다.You can enable failed request tracing by using Visual Studio, but you can't view them in Visual Studio. 이러한 로그는 XML 파일입니다.These logs are XML files. 스트리밍 로그 서비스는 일반 텍스트 모드에서 읽을 수 있는 것으로 간주되는 파일인 .txt, .html, .log 파일만을 모니터링합니다.The streaming log service only monitors files that are deemed readable in plain text mode: .txt, .html, and .log files.

실패한 요청 추적 로그는 FTP를 통해 브라우저에서 직접 보거나 로컬에서 FTP 도구를 사용하여 로컬 컴퓨터에 다운로드한 후 볼 수 있습니다.You can view failed request tracing logs in a browser directly via FTP or locally after using an FTP tool to download them to your local computer. 이 섹션에서는 브라우저에서 직접 보겠습니다.In this section, you'll view them in a browser directly.

  1. 서버 탐색기에서 열었던 Azure Web App 창의 구성 탭에서 실패한 요청 추적켜기로 변경하고 저장을 클릭합니다.In the Configuration tab of the Azure Web App window that you opened from Server Explorer, change Failed Request Tracing to On, and then click Save.

    실패한 요청 추적 사용

  2. 웹 앱이 표시된 브라우저 창의 주소 표시줄에서 추가 문자를 URL에 추가하고 Enter 키를 눌러 404 오류를 발생시킵니다.In the address bar of the browser window that shows the web app, add an extra character to the URL and click Enter to cause a 404 error.

    그러면 실패한 요청 추적 로그가 만들어집니다. 다은 단계는 로그를 보거나 다운로드하는 방법을 보여 줍니다.This causes a failed request tracing log to be created, and the following steps show how to view or download the log.

  3. Visual Studio의 Azure Web App 창에 있는 구성 탭에서 관리 포털에서 열기를 클릭합니다.In Visual Studio, in the Configuration tab of the Azure Web App window, click Open in Management Portal.

  4. 웹앱의 Azure Portal 설정 페이지에서 배포 자격 증명을 클릭한 다음 새 사용자 이름 및 암호를 입력합니다.In the Azure portal Settings page for your web app, click Deployment credentials, and then enter a new user name and password.

    새 FTP 사용자 이름 및 암호

    참고

    로그인할 때, 앞에 웹 앱 이름이 있는 상태로 전체 사용자 이름을 사용해야 합니다.When you log in, you have to use the full user name with the web app name prefixed to it. 예를 들어, 사용자 이름으로 "myid"를 입력하고 사이트가 "myexample"인 경우, "myexample\myid"로 로그인합니다.For example, if you enter "myid" as a user name and the site is "myexample", you log in as "myexample\myid".

  5. 새 브라우저 창에서, 사용자 웹앱에 대한 개요 페이지의 FTP 호스트 이름 또는 FTPS 호스트 이름 아래에 표시된 URL로 이동합니다.In a new browser window, go to the URL that is shown under FTP hostname or FTPS hostname in the Overview page for your web app.

  6. 이전에 만든 FTP 자격 증명을 사용하여 로그인합니다(사용자 이름 앞에 웹 앱 이름 포함).Log in using the FTP credentials that you created earlier (including the web app name prefix for the user name).

    브라우저에 웹 앱의 루트 폴더가 표시됩니다.The browser shows the root folder of the web app.

  7. LogFiles 폴더를 엽니다.Open the LogFiles folder.

    LogFiles 폴더 열기

  8. 이름에 W3SVC와 숫자 값이 있는 폴더를 엽니다.Open the folder that is named W3SVC plus a numeric value.

    W3SVC 폴더 열기

    폴더에는 실패한 요청 추적을 사용하도록 설정한 후에 기록된 모든 로그가 XML 파일로 포함되어 있습니다. 또한 브라우저에서 XML 형식으로 사용할 수 있는 XSL 파일도 있습니다.The folder contains XML files for any errors that have been logged after you enabled failed request tracing, and an XSL file that a browser can use to format the XML.

    W3SVC 폴더

  9. 추적 정보를 확인하려는 실패한 요청의 XML 파일을 클릭합니다.Click the XML file for the failed request that you want to see tracing information for.

    다음 그림에는 샘플 오류에 대한 추적 정보의 일부가 나와 있습니다.The following illustration shows part of the tracing information for a sample error.

    브라우저의 실패한 요청 추적

다음 단계Next Steps

Visual Studio를 사용하여 Azure 웹 앱에서 생성된 로그를 쉽게 보는 방법을 확인했습니다.You've seen how Visual Studio makes it easy to view logs created by an Azure web app. 다음 섹션에서는 관련 항목에 대한 기타 리소스 링크를 제공합니다.The following sections provide links to more resources on related topics:

  • Azure 웹 앱 문제 해결Azure web app troubleshooting
  • Visual Studio의 디버깅Debugging in Visual Studio
  • Azure의 원격 디버깅Remote debugging in Azure
  • ASP.NET 응용 프로그램의 추적Tracing in ASP.NET applications
  • 웹 서버 로그 분석Analyzing web server logs
  • 실패한 요청 로그 분석Analyzing failed request tracing logs
  • Cloud Services 디버깅Debugging Cloud Services

Azure 웹 앱 문제 해결Azure web app troubleshooting

Azure App Service에서 웹앱 문제 해결에 대한 자세한 내용은 다음 리소스를 참조하십시오.For more information about troubleshooting web apps in Azure App Service, see the following resources:

특정 문제 해결 질문과 관련하여 도움이 필요한 경우 다음 포럼 중 하나에서 게시물을 작성하십시오.For help with a specific troubleshooting question, start a thread in one of the following forums:

Visual Studio의 디버깅Debugging in Visual Studio

Visual Studio에서 디버그 모드를 사용하는 방법에 대한 자세한 내용은 Visual Studio의 디버깅Visual Studio 2010을 사용한 디버깅 팁을 참조하세요.For more information about how to use debug mode in Visual Studio, see Debugging in Visual Studio and Debugging Tips with Visual Studio 2010.

Azure의 원격 디버깅Remote debugging in Azure

Azure 웹 앱 및 WebJob의 원격 디버깅에 대한 자세한 내용은 다음 리소스를 참조하세요.For more information about remote debugging for Azure web apps and WebJobs, see the following resources:

웹 앱에 Azure 웹 API 또는 Mobile Services 백 엔드가 사용되는 경우 이들을 디버그해야 하면 Visual Studio에서 .NET 백 엔드 디버깅을 참조하세요.If your web app uses an Azure Web API or Mobile Services back-end and you need to debug that, see Debugging .NET Backend in Visual Studio.

ASP.NET 응용 프로그램의 추적Tracing in ASP.NET applications

현재 인터넷에서 ASP.NET 추적과 관련하여 완벽한 최신 소개 정보를 제공하는 곳이 없습니다.There are no thorough and up-to-date introductions to ASP.NET tracing available on the Internet. 최상의 방법은 MVC가 아직 출시되지 않은 시점에 Web Forms용으로 작성된 기존 소개 자료를 먼저 참조한 후, 특정 문제에 주력하는 최신 블로그 게시물의 정보로 보충하는 것입니다.The best you can do is get started with old introductory materials written for Web Forms because MVC didn't exist yet, and supplement that with newer blog posts that focus on specific issues. 시작하기에 유용한 리소스 위치는 다음과 같습니다.Some good places to start are the following resources:

try
{
   // Your code that might cause an exception to be thrown.
}
catch (Exception ex)
{
    Trace.TraceError("Exception: " + ex.ToString());
    throw;
}

오류 로깅과 관련하여, 사용자 자신의 추적 코드를 기록하는 또 다른 방법은 ELMAH같은 오픈 소스 로깅 프레임워크를 사용하는 것입니다.For error logging, an alternative to writing your own tracing code is to use an open-source logging framework such as ELMAH. 자세한 내용은 Scott Hanselman의 ELMAH 관련 블로그 게시물(영문)을 참조하십시오.For more information, see Scott Hanselman's blog posts about ELMAH.

또한 Azure에서 스트리밍 로그를 가져오기 위해 ASP.NET이나 System.Diagnostics 추적을 사용할 필요가 없습니다.Also, you don't need to use ASP.NET or System.Diagnostics tracing to get streaming logs from Azure. Azure 웹앱 스트리밍 로그 서비스는 LogFiles 폴더에 위치한 .txt, .html 또는 .log 파일을 스트리밍합니다.The Azure web app streaming log service streams any .txt, .html, or .log file that it finds in the LogFiles folder. 따라서 웹앱의 파일 시스템에 기록하는 사용자 자신의 로깅 시스템을 만들 수 있습니다. 그러면 파일이 자동으로 스트리밍되어 다운로드됩니다.Therefore, you could create your own logging system that writes to the file system of the web app, and your file is automatically streamed and downloaded. 그러려면 d:\home\logfiles 폴더에 파일을 만드는 응용 프로그램 코드만 작성하면 됩니다.All you have to do is write application code that creates files in the d:\home\logfiles folder.

웹 서버 로그 분석Analyzing web server logs

웹 서버 로그 분석에 대한 자세한 내용은 다음 리소스를 참조하세요.For more information about analyzing web server logs, see the following resources:

실패한 요청 로그 분석Analyzing failed request tracing logs

Microsoft TechNet 웹 사이트에 포함된 실패한 요청 추적 사용 섹션은 이러한 로그 사용 방법을 이해하는 데 유용할 수 있습니다.The Microsoft TechNet website includes a Using Failed Request Tracing section, which may be helpful for understanding how to use these logs. 하지만 이 설명서에서는 IIS에서 실패한 요청 추적을 구성하는 방법을 중점적으로 다루며, 이는 Azure Web Apps에서 수행할 수 없습니다.However, this documentation focuses mainly on configuring failed request tracing in IIS, which you can't do in Azure Web Apps.