애플리케이션 로그 작성

App Engine에서 실행되는 애플리케이션에 요청이 전송될 때는 요청 및 응답 세부정보가 자동으로 기록되며, Google Cloud Platform 콘솔 Stackdriver 로그 뷰어에서 이를 확인할 수 있습니다.

앱의 요청 및 애플리케이션 로그는 Stackdriver Logging 에이전트에 의해 수집됩니다. 로그 보존 정책 및 최대 로그 항목 크기는 할당량 정책을 참조하세요. 로그를 더 장기간 저장하려면 Cloud Storage로 로그를 내보낼 수 있습니다. 또한 추가 처리를 위해 로그를 BigQuery 및 Pub/Sub으로 내보낼 수도 있습니다.

사용할 수 있는 로그 목록은 App Engine 가변 로그를 참조하세요.

애플리케이션 로그 작성

애플리케이션에서 요청을 처리할 때 자체 로깅 메시지를 stdoutstderr에 기록할 수도 있습니다. 출력에는 stdout을, 오류에는 stderr을 사용하여 애플리케이션 로그를 씁니다. 이러한 파일은 자동으로 수집되며 로그 뷰어에서 확인할 수 있습니다. 로그 뷰어에서 필터링에 사용할 수 있는 로그 수준은 제공되지 않습니다. 그러나 로그 뷰어는 텍스트, 타임 스탬프와 같은 다른 필터링을 제공합니다. 크기를 제한하기 위해 로그 뷰어에서 가장 최근 항목만 유지됩니다.

Stackdriver Logging API 클라이언트 라이브러리를 사용하여 맞춤 로그 작성

Google.Cloud.Diagnostics.AspNetCore는 Stackdriver Logging API v2 클라이언트 라이브러리가 포함된 .NET Core 클라이언트 라이브러리입니다. 이 라이브러리를 사용하여 맞춤 로그를 작성할 수 있습니다.

클라이언트 라이브러리 설치

로깅 클라이언트를 사용하려면 Google.Cloud.Diagnostics.AspNetCore 클라이언트 라이브러리를 설치합니다.

  1. Visual Studio에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 솔루션용 Nuget 패키지 관리를 선택합니다.

  2. 사전 출시 포함 확인란을 선택합니다.

  3. 이름이 Google.Cloud.Diagnostics.AspNetCore인 패키지를 검색하여 설치합니다.

애플리케이션 설정

Stackdriver Logging으로 로그를 보내도록 애플리케이션을 설정하려면 다음 안내를 따르세요.

  1. 애플리케이션 코드에 다음 문을 추가합니다.

    using Google.Cloud.Diagnostics.AspNetCore;
    
  2. 웹 애플리케이션의 appsettings.json 파일에 다음 코드를 추가합니다.

    {
      "Stackdriver": {
        "ProjectId": "YOUR-GOOGLE-PROJECT-ID",
        "ServiceName": "NAME-OF-YOUR-SERVICE",
        "Version": "VERSION-OF-YOUR-SERVICE"
      }
    }

    각 매개변수는 다음과 같습니다.

    • YOUR-GOOGLE-PROJECT-ID는 프로젝트 ID입니다.
    • NAME-OF-YOUR-SERVICE는 서비스 이름입니다.
    • VERSION-OF-YOUR-SERVICE는 서비스 버전입니다.
  3. 애플리케이션의 Startup.cs 파일에서 ConfigureServices() 메소드를 만들거나 편집한 후 다음 코드를 추가합니다.

            public void ConfigureServices(IServiceCollection services)
            {
                services.AddOptions();
                services.Configure<StackdriverOptions>(
                    Configuration.GetSection("Stackdriver"));
                services.AddGoogleExceptionLogging(options =>
                {
                    options.ProjectId = Configuration["Stackdriver:ProjectId"];
                    options.ServiceName = Configuration["Stackdriver:ServiceName"];
                    options.Version = Configuration["Stackdriver:Version"];
                });
    
                // Add trace service.
                services.AddGoogleTrace(options =>
                {
                    options.ProjectId = Configuration["Stackdriver:ProjectId"];
                    options.Options = TraceOptions.Create(
                        bufferOptions: BufferOptions.NoBuffer());
                });
    
                // Add framework services.
                services.AddMvc();
            }
    

  4. 다음 코드 샘플을 맞춤설정하여 애플리케이션의 Startup.cs 파일에 추가합니다.

            public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                // Configure logging service.
                loggerFactory.AddGoogle(Configuration["Stackdriver:ProjectId"]);
                var logger = loggerFactory.CreateLogger("testStackdriverLogging");
                // Write the log entry.
                logger.LogInformation("Stackdriver sample started. This is a log message.");
                // Configure error reporting service.
                app.UseGoogleExceptionLogging();
                // Configure trace service.
                app.UseGoogleTrace();
    
                app.UseStaticFiles();
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
    

애플리케이션 로그 보기

로그 뷰어를 사용하여 애플리케이션 로그를 볼 수 있습니다.

  1. GCP 콘솔에서 Stackdriver > 로깅 페이지로 이동합니다.

    로그 뷰어 페이지로 이동

  2. 페이지 상단에서 기존 GCP 프로젝트를 선택합니다.

  3. 드롭다운 메뉴에서 리소스 유형으로 GAE 애플리케이션을 선택하여 App Engine 로그를 확인합니다.

드롭다운 메뉴 및 로그 뷰어의 다른 구성 요소를 사용하여 로그에서 관련 항목을 필터링하거나 검색할 수 있습니다. 자세한 내용은 로그 뷰어 필터 인터페이스를 참조하세요.

애플리케이션 로그 필터링

로그 뷰어에서 라벨 또는 텍스트 검색으로 로그 항목을 필터링하려면 기본 로그 필터를 참조하세요.

로그 항목 집합을 더 자세하게 지정할 수 있는 고급 로그 필터를 작성하려면 고급 로그 필터를 참조하세요.

도움말: 특정 인스턴스, 서비스, 버전의 로그를 보려면 로그 뷰어에서 해당 리소스 ID로 필터링하세요. 서비스 및 버전 ID는 GCP 콘솔의 App Engine 대시보드 상단에 있는 드롭다운 메뉴에 나열되며, 인스턴스 ID는 GCP 콘솔 인스턴스 페이지에 나열됩니다.

App Engine 대시보드로 이동

로그 뷰어에서 동일한 trace로 상관관계가 있는 여러 로그 항목을 '상위-하위' 형식으로 조회할 수 있습니다.

여러 로그 항목에 상관관계를 지정하는 방법은 다음과 같습니다.

  1. request 로그와 상관관계를 맺을 앱 로그를 결정합니다. 이 상관관계를 적용하려면 request 로그 유형과 동일하지 않은 유형의 앱 로그를 선택해야 합니다.

  2. 애플리케이션 코드에서 수신 요청의 X-Cloud-Trace-Context HTTP 헤더를 찾습니다. 헤더에서 추적 식별자를 추출합니다. 자세한 내용은 Stackdriver Trace 지원을 참조하세요.

  3. 앱 로그 항목의 LogEntry trace 필드에서 trace 식별자를 설정합니다. 예상 형식은 projects/[PROJECT_ID]/traces/[TRACE_ID]입니다.

로그 항목에 상관관계를 지정한 후 상관관계가 있는 로그 항목을 보는 방법은 다음과 같습니다.

  1. 로그 뷰어에서 App Engine 로그를 엽니다. 자세한 내용은 애플리케이션 로그 보기를 참조하세요.

  2. 로그 항목 왼쪽의 작은 검정색 삼각형을 클릭하여 request 로그를 확장합니다. request 및 앱 로그가 중첩된 형식으로 표시됩니다.

    로그 간에 상위-하위 관계가 내재되어 있지는 않습니다. 예를 들어 상관관계가 지정된 로그의 로그 유형이 nginx.requestapp인 경우 로그 뷰어에서 상관관계가 지정된 여러 app 로그가 포함된 nginx.request 로그를 열면 app 로그가 아래에 표시됩니다. 하나의 nginx.request 로그와 상관관계가 있는 app 로그를 열면 해당 app 로그 아래에 nginx.request 로그가 표시됩니다.

제한사항은 다음과 같습니다.

  • '하위' 로그 항목의 가장 높은 severity가 최상위 항목에 자동으로 적용되지는 않습니다. 이 동작이 필요할 경우 최상위 항목에서 가장 높은 severity를 수동으로 설정하세요.
  • 최상위 수준 로그의 httpRequest.requestUrl 필드를 설정합니다.

API를 통해 로그 읽기

가변형 환경에서 생성된 App Engine 로그를 읽기 위한 API는 없습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

App Engine flexible environment for .NET docs