.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 機能
できます。
この機能を使用するには、設定に次の変更を追加する必要があります ファイル:
<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>
<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>