کتابخانه سرویس گیرنده دات نت درخواست ها، پاسخ ها و پیام های خلاصه ارسال شده به Google Ads API را ثبت می کند. گزارشها را میتوان در یک TraceListener
سفارشی یا در یک نمونه سفارشی ILogger
نوشت.
TraceListener
قبل از برقراری تماس API، میتوانید ورود به TraceListener
را با افزودن خط زیر در روش 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
برای گزارش های برنامه خود استفاده می کنید، این راه حل به شما امکان می دهد گزارش های API Google Ads را در گزارش های موجود خود ادغام کنید.
ابتدا یک 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 را در چارچوبهای گزارشگیری موجود، مانند Log4Net، NLog، و Serilog ادغام کنید.
سطوح ورود به سیستم
کتابخانه انواع مختلفی از رویدادها را در سطوح مختلف گزارش ثبت می کند. برای یک پاسخ موفق API، خلاصه در INFO
ثبت میشود و درخواست و پاسخهای کامل در DEBUG
ثبت میشوند.
در درخواستی که منجر به خطای API می شود، پیام خلاصه در WARN
ثبت می شود و درخواست و پاسخ کامل در INFO
ثبت می شود.
خرابی های جزئی در DEBUG
ثبت می شوند.
شناسه درخواست
در بیشتر موارد، گزارشهای تولید شده توسط کتابخانه مشتری جزئیات کافی برای عیبیابی مشکلات شما را ارائه میدهند. هنگام تماس با انجمن پشتیبانی/نام مستعار، میتوانید گزارشها را ارائه کنید (که به طور پیشفرض اطلاعات حساس را ویرایش میکند) یا فقط شناسه درخواست را به اشتراک بگذارید (که به عنوان بخشی از گزارش پاسخ ثبت شده است).
اگر ترجیح می دهید خودتان شناسه درخواست را بگیرید، می توانید از یکی از روش های زیر استفاده کنید:
استخراج از طریق تماس های معمولی API
میتوانید از CallSetting
سفارشی با TrailingMetadataHandler
برای گرفتن شناسههای درخواست از تماسهای معمولی unary استفاده کنید.
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
شناسه درخواست به عنوان بخشی از شی پاسخ برای تماسهای API جریانی برگردانده میشود. به عنوان مثال، شما می توانید شناسه درخواست برای تماس SearchStream
را به صورت زیر دریافت کنید:
// 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);
}
}
);
استثنائات
هر زمان که تماس API ناموفق باشد، شناسه درخواست به عنوان بخشی از استثنای GoogleAdsException
برگردانده میشود.
try
{
// Make an API call.
...
}
catch (GoogleAdsException e)
{
string requestId = e.RequestId;
}
ورود به سیستم پیشرفته
اگر گزارش API جزئیات کافی را در اختیار شما قرار نمی دهد، ثبت بیشتر در سطح پایین را در سطح gRPC فعال کنید. به خاطر داشته باشید که خروجی می تواند حجیم باشد. گزارشهای gRPC در stderr نوشته میشوند، اما میتوانید لاگر خود را مطابق شکل زیر وصل کنید. متغیرهای محیطی پشتیبانی شده
Environment.SetEnvironmentVariable("GRPC_VERBOSITY", "DEBUG");
Environment.SetEnvironmentVariable("GRPC_TRACE", "http");
GrpcEnvironment.SetLogger(new ConsoleLogger());
پیکربندی TraceListener با استفاده از App.config (میراث)
اگر برنامه شما برای هدف NET Framework ساخته میشود، میتوانید پیکربندی گزارشگیری را از فایل App.config
یا Web.config
برنامه خود بارگیری کنید. این یک عملکرد دات نت قدیمی است که برای برنامه های ساخته شده برای اهداف NET Core پشتیبانی نمی شود.
برای استفاده از این ویژگی، باید تغییرات زیر را به فایل پیکربندی خود اضافه کنید:
قطعه زیر را در قسمت
<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>