ロギング

<ph type="x-smartling-placeholder">

.NET クライアント ライブラリは、サービスに対するリクエスト、レスポンス、サマリー メッセージをログに記録します。 Google Ads APIログはカスタム レジストリに TraceListener カスタムの ILogger 作成します。

TraceListener

TraceListener へのロギングを有効にするには、次の行を API 呼び出しを行う前に、Main メソッドを呼び出します。

using Google.Ads.GoogleAds.Util;
...

// Detailed logs.
TraceUtilities.Configure(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE,
    "C:\\logs\\details.log", System.Diagnostics.SourceLevels.All);

// Summary logs.
TraceUtilities.Configure(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE,
    "C:\\logs\\details.log", System.Diagnostics.SourceLevels.All);

ILogger

アプリケーション ログにすでに ILogger を使用している場合、このソリューションは を使用すると、Google Ads API のログを既存のログに統合できます。

まず、LoggerFactory を作成するか、すでに作成している場合はフィルタを追加します Google Ads API ログの場合:

var loggerFactory = LoggerFactory.Create(delegate (ILoggingBuilder builder)
{
  // Log to stdout.
  builder.AddConsole();
  builder.AddFilter(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE, LogLevel.Trace);
  builder.AddFilter(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE, LogLevel.Trace);
});

次に、LoggerFactory を使用してリクエストとレスポンスのロガーを作成する 概要と詳細:

ILogger summaryLogger = loggerFactory.CreateLogger(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE);
ILogger detailLogger = loggerFactory.CreateLogger(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE);

最後に、トレースを ILogger にリダイレクトするようにクライアント ライブラリを構成します。 インスタンス:

TraceUtilities.ConfigureSummaryLogger(summaryLogger);
TraceUtilities.ConfigureDetailLogger(detailLogger);

このソリューションでは、Google Ads API のリクエストおよびレスポンスのログを 既存のロギング フレームワークをサポートしています。

ログレベル

このライブラリは、さまざまなタイプのイベントをさまざまなログレベルに記録します。1 つの API レスポンスが正常に終了した場合、概要は INFO にロギングされ、 リクエストとレスポンスは DEBUG に記録されます。

API エラーの原因となったリクエストについては、概要メッセージが WARN。リクエストとレスポンス全体は INFO に記録されます。

部分的なエラーは DEBUG に記録されます。

リクエスト ID

ほとんどの場合、クライアント ライブラリによって生成されたログで十分な トラブルシューティングの詳細をご覧ください。サポートへの問い合わせ時 必要に応じて、ログ(機密情報を秘匿化するログ)を 情報)を指定するか、リクエスト ID( レスポンスログの一部)が返されます。

リクエスト ID をご自身で取得したい場合は、 次のようなアプローチがあります。

通常の API 呼び出しによる抽出

TrailingMetadataHandler でカスタム CallSetting を使用して、 リクエスト ID を取得します。

CallSettings callSettings = CallSettings.FromTrailingMetadataHandler(
    delegate (Metadata metadata) {
        // Extract the request ID from the trailing metadata.
        string requestId = metadata.Get("request-id").Value;
    });
// Add the campaigns.
MutateCampaignsResponse retVal = campaignService.MutateCampaigns(
    customerId.ToString(), operations.ToArray(), callSettings);

ストリーミング API 呼び出しによる抽出

リクエスト ID はストリーミング API のレスポンス オブジェクトの一部として返されます。 できます。たとえば、SearchStream 呼び出しのリクエスト ID は次のように取得できます。 次のようになります。

// Get the GoogleAdsService.
GoogleAdsServiceClient googleAdsService = client.GetService(
    Services.V17.GoogleAdsService);

// Retrieve all campaigns.
string query = @"SELECT
                campaign.id,
                campaign.name,
                campaign.network_settings.target_content_network
            FROM campaign
            ORDER BY campaign.id";

// Issue a search request.
googleAdsService.SearchStream(customerId.ToString(), query,
    delegate (SearchGoogleAdsStreamResponse resp)
    {
        // Extract the request ID from the response.
        string requestId = resp.RequestId;
        foreach (GoogleAdsRow googleAdsRow in resp.Results)
        {
            Console.WriteLine("Campaign with ID {0} and name '{1}' was found.",
                googleAdsRow.Campaign.Id, googleAdsRow.Campaign.Name);
        }
    }
);

例外

リクエスト ID は GoogleAdsException 例外の一部として返されます。 API 呼び出しが失敗すると 自動的に再試行されます

try
{
  // Make an API call.
  ...
}
catch (GoogleAdsException e)
{
    string requestId = e.RequestId;
}

高度なロギング

API ログで十分な詳細情報が得られない場合は、 確認しました出力が大量になる場合があるので注意してください。gRPC ログは stderr に書き込まれますが、次のように独自のロガーをアタッチできます。 対応環境 定義します

Environment.SetEnvironmentVariable("GRPC_VERBOSITY", "DEBUG");
Environment.SetEnvironmentVariable("GRPC_TRACE", "http");
GrpcEnvironment.SetLogger(new ConsoleLogger());

App.config(レガシー)を使用した TraceListener 構成

アプリが .NET Framework ターゲット向けにビルドされている場合は、 アプリの App.config ファイルまたは Web.config ファイルから構成ファイルを削除します。これは .NET Core 用に構築されたアプリでサポートされていない以前の .NET 機能 できます。

この機能を使用するには、設定に次の変更を追加する必要があります ファイル:

  1. <configuration> セクションに次のスニペットを追加します。

    <system.diagnostics>
      <sources>
        <source name="GoogleAds.DeprecationMessages"
            switchName="GoogleAds.DeprecationMessages"
            switchType="System.Diagnostics.SourceSwitch">
          <listeners>
            <add name="myListener" type="System.Diagnostics.EventLogTraceListener"
               initializeData="Application"/>
          </listeners>
        </source>
        <source name="GoogleAds.DetailedRequestLogs"
            switchName="GoogleAds.DetailedRequestLogs"
            switchType="System.Diagnostics.SourceSwitch">
          <listeners>
            <add name="detailedRequestLogListener" type="System.Diagnostics.ConsoleTraceListener"
               initializeData="true"/>
            <!-- Use the following to log to file. Modify the initializeData
                 attribute to control the path to the detailed request log file. -->
            <!--
            <add name="detailedRequestLogListener" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="C:\Logs\detailed_logs.log"/>
            <remove name="Default"/>
            -->
          </listeners>
        </source>
        <source name="GoogleAds.SummaryRequestLogs" switchName="GoogleAds.SummaryRequestLogs"
            switchType="System.Diagnostics.SourceSwitch">
          <listeners>
            <add name="summaryRequestLogListener" type="System.Diagnostics.ConsoleTraceListener"
               initializeData="true"/>
            <!-- Use the following to log to file. Modify the initializeData
                 attribute to control the path to the summary request log file. -->
            <!--
            <add name="summaryRequestLogListener" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="C:\Logs\summary_logs.log"/>
            -->
            <remove name="Default"/>
          </listeners>
        </source>
      </sources>
      <switches>
        <!-- Use this trace switch to control the deprecation trace messages
             written by Ads* .NET libraries. The default is level is set to
             Warning. To disable all messages, set this value to Off. See
             msdn.microsoft.com/en-us/library/system.diagnostics.sourcelevels.aspx
             for all possible values this key can take. -->
        <add name="GoogleAds.DeprecationMessages" value="Warning"/>
        <!-- Use this trace switch to control the detailed request logs written by Ads*
             .NET libraries. The default level is set to Off. Logs are generated at
             both the Error and Information levels. -->
        <add name="GoogleAds.DetailedRequestLogs" value="Off"/>
        <!-- Use this trace switch to control the summary request logs written by
             Ads* .NET libraries. The default level is set to Off. Logs are
             generated at both the Error and Information levels. -->
        <add name="GoogleAds.SummaryRequestLogs" value="Off"/>
      </switches>
      <trace autoflush="true"/>
    </system.diagnostics>
    
  2. <configSections> セクションに次のスニペットを追加します。

    <section name="system.diagnostics" type="System.Diagnostics.SystemDiagnosticsSection"/>
    

    App.config は次のようになります。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler"/>
        <section name="system.diagnostics" type="System.Diagnostics.SystemDiagnosticsSection"/>
      </configSections>
      <GoogleAdsApi>
        <!-- Google Ads API settings. -->
      </GoogleAdsApi>
      <system.diagnostics>
        <!-- Logging settings. -->
      </system.diagnostics>
    </configuration>