ไลบรารีของไคลเอ็นต์ .NET จะบันทึกคำขอ การตอบกลับ และข้อความสรุปที่ส่งไปยัง
Google Ads API สามารถเขียนบันทึกไปยัง
TraceListener
หรือช่องที่กำหนดเอง
ILogger
อินสแตนซ์
TraceListener
คุณเปิดใช้การเข้าสู่ระบบไปยัง TraceListener
ได้ด้วยการเพิ่มบรรทัดต่อไปนี้ใน
Main
ก่อนทำการเรียก API
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 ไว้ใน เฟรมเวิร์กการบันทึกที่มีอยู่ เช่น Log4Net, NLog และ Serilog
ระดับบันทึก
ไลบรารีจะบันทึกเหตุการณ์ประเภทต่างๆ ไว้ในระดับการบันทึกที่ต่างกัน สำหรับ
การตอบกลับจาก API ที่สำเร็จ ข้อมูลสรุปจะถูกบันทึกไว้เมื่อ INFO
และ
บันทึกคำขอและการตอบกลับได้ที่ DEBUG
ในคำขอที่ทำให้เกิดข้อผิดพลาด API ข้อความสรุปจะถูกบันทึกที่
WARN
ระบบจะบันทึกคำขอและการตอบกลับทั้งหมดไว้ที่ INFO
การดำเนินการไม่สำเร็จบางส่วนจะบันทึกที่ DEBUG
รหัสคำขอ
ในกรณีส่วนใหญ่ บันทึกที่สร้างขึ้นโดยไลบรารีของไคลเอ็นต์จะเพียงพอ รายละเอียดเพื่อแก้ปัญหาของคุณ เมื่อติดต่อทีมสนับสนุน ฟอรัม/ชื่อแทน คุณสามารถมอบบันทึก (ซึ่งจะปกปิดความละเอียดอ่อน ข้อมูลโดยค่าเริ่มต้น) หรือแชร์เพียงรหัสคำขอ (ซึ่งบันทึกเป็น ของบันทึกการตอบกลับ)
หากคุณต้องการบันทึกรหัสคำขอด้วยตัวเอง คุณสามารถใช้หนึ่งใน วิธีการต่อไปนี้
การดึงข้อมูลผ่านการเรียก API ปกติ
คุณสามารถใช้ CallSetting
ที่กำหนดเองกับ TrailingMetadataHandler
เพื่อจับภาพได้
ขอรหัสจากการโทรเพียงอย่างเดียวตามปกติ
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);
}
}
);
ข้อยกเว้น
รหัสคำขอจะส่งกลับมาเป็นส่วนหนึ่งของข้อยกเว้น GoogleAdsException
เมื่อใดก็ตามที่การเรียก API ล้มเหลว
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 เดิมที่ไม่รองรับสำหรับแอปที่สร้างขึ้นสำหรับ .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>