寫入應用程式記錄檔

將要求傳送到在 App Engine 上執行的應用程式時,系統會自動記錄要求和回應的詳細資料,您可以在 Google Cloud Platform 主控台的 Stackdriver 記錄檢視器中查看這些資料。

Stackdriver Logging 代理程式也會收集應用程式的要求和應用程式記錄。請參閱配額政策,瞭解記錄保留政策和記錄項目的大小上限。如要將記錄檔保留較長的時間,您可以將記錄檔匯出至 Cloud Storage。您也可以將記錄檔匯出至 BigQuery 和 Pub/Sub,以便進行後續的處理作業。

如需檢視您可使用的記錄清單,請參閱 App Engine 彈性環境記錄

寫入應用程式記錄檔

應用程式在處理要求時,會在 stdoutstderr 中寫入本身的記錄訊息。您可使用 stdout 來寫入應用程式記錄檔,以便輸出記錄內容;如果需要擷取錯誤訊息,則可使用 stderr。系統會自動收集這些檔案,您也可以在記錄檢視器中查看這些檔案。請注意,這並不會提供可讓您用來在記錄檢視器中篩選的記錄層級;然而,記錄檢視器確實提供了其他的篩選條件,例如文字、時間戳記等。記錄檢視器只會保留最新的項目,以便限制這些項目的大小。

在實際工作環境中,ASP.NET Core 應用程式寫入 stdout 和 stderr 的內容非常少,因此 Stackdriver 不會把記錄剖析成結構化的資料。

如何設定應用程式,以便將記錄傳送至 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 是您的服務版本。
    1. 在應用程式的 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();
              }
      
    2. 自訂下列程式碼範例,然後將已自訂程式碼加入應用程式的 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」>「Logging」(記錄) 頁面:

    前往記錄檢視器頁面

  2. 在頁面頂端選取現有的 GCP 專案。

  3. 從下拉式選單中選取 [GAE Application] (GAE 應用程式) 做為資源類型,以查看 App Engine 記錄檔。

您可以使用記錄檢視器的下拉式選單和其他元件,來篩選或搜尋相關項目的記錄。詳情請參閱記錄檢視器的篩選器介面

篩選應用程式記錄檔

如要在記錄檢視器中透過標籤或文字搜尋功能來篩選記錄項目,請參閱基本記錄篩選器

如要寫入進階記錄篩選器以進一步指定一組記錄項目,請參閱進階記錄篩選器

如要檢視特定執行個體、服務或版本的記錄檔,請按照記錄篩選器中的資源 ID 進行篩選。如要尋找服務和版本 ID,請查看 App Engine 資訊主頁

在記錄檢視器中,可使用「上/下層」格式查看與相同的 trace 相關聯的記錄項目。

關聯記錄項目的操作說明如下:

  1. 決定您要與 request 記錄建立關聯性的應用程式記錄。請注意,如要讓這個關聯生效,您選擇的應用程式記錄類型不得request 記錄類型相同。

  2. 在您的應用程式碼中,尋找傳入要求的 X-Cloud-Trace-Context HTTP 標頭。從標頭中擷取追蹤記錄 ID。詳情請參閱 Stackdriver Trace 支援

  3. 在應用程式記錄項目的 LogEntry trace 欄位中設定 trace ID。格式應為 projects/[PROJECT_ID]/traces/[TRACE_ID]

將記錄項目建立關聯後,請依照下列操作說明,查看相關聯的記錄項目:

  1. 在記錄檢視器中開啟 App Engine 記錄檔,詳情請參閱查看應用程式記錄檔一節。

  2. 按一下記錄項目左側的黑色小三角形以展開 request 記錄。您會看到 request 和應用程式記錄檔以巢狀格式顯示。

此外:

  • 來自「下層」記錄項目的最高層級 severity 不會自動套用到頂層項目。如果您希望套用,請在頂層項目中手動設定最高層級的 severity
  • 設定頂層記錄的 httpRequest.requestUrl 欄位。

透過 API 讀取記錄

彈性環境中沒有建立用於讀取 App Engine 記錄的 API。