লাইব্রেরি Google Ads API ইন্টারঅ্যাকশনের জন্য বহুমুখী লগিং প্রদান করে। আপনি ক্যাপচার করতে পারেন:
- বিস্তারিত তথ্য: API-এ পাঠানো সম্পূর্ণ অনুরোধ এবং প্রাপ্ত প্রতিক্রিয়া।
- সংক্ষিপ্ত সারাংশ: মিথস্ক্রিয়াগুলির একটি উচ্চ-স্তরের ওভারভিউ।
এবং আপনি এই লগিং সেটিংস দুটি উপায়ে নিয়ন্ত্রণ করতে পারেন:
- ক্লায়েন্ট লাইব্রেরি কনফিগারেশন: লাইব্রেরির নির্দিষ্ট কনফিগারেশন বিকল্পগুলি ব্যবহার করুন।
- পাইথনের সাথে প্রোগ্রাম্যাটিকভাবে: আরও সরাসরি নিয়ন্ত্রণের জন্য পাইথনের বিল্ট-ইন লগিং ফ্রেমওয়ার্ক ব্যবহার করুন।
লগিং স্বয়ংক্রিয়ভাবে কনফিগার করা হয় যখন একটি GoogleAdsClient
ইনস্ট্যান্স শুরু হয়। এই প্রারম্ভিক পদক্ষেপটি ঘটে, উদাহরণস্বরূপ, যখন আপনি load_from_storage
পদ্ধতি ব্যবহার করেন। এই মুহুর্তে, লাইব্রেরি করবে:
- এর কনফিগারেশন থেকে আপনার নির্দিষ্ট লগিং সেটিংস পড়ুন।
- এই সেটিংসগুলিকে সক্রিয় করতে পাইথনের অন্তর্নির্মিত
logging.config.dictConfig
এ পাস করুন।
যখন এই লাইব্রেরিটি একটি ইনস্টল করা প্যাকেজ হিসাবে ব্যবহার করা হয়, তখন আপনাকে এটির লগিংকে আপনার অ্যাপ্লিকেশনের লগিং সেটআপের সাথে সংহত করতে হবে৷ বিশেষত, আপনাকে addHandler
পদ্ধতির সাথে লাইব্রেরির নিজস্ব লগার ইনস্ট্যান্সে একটি লগিং হ্যান্ডলার যোগ করতে হবে। এই হ্যান্ডলার লাইব্রেরির লগ বার্তাগুলি কোথায় নির্দেশিত হবে তা নির্দেশ করবে (যেমন, কনসোলে, একটি ফাইল, ইত্যাদি)। এটি করার জন্য, প্রথমে এখানে দেখানো লাইব্রেরির লগার উদাহরণটি পুনরুদ্ধার করুন:
import logging
logger = logging.getLogger('google.ads.googleads.client')
লাইব্রেরির লগার পুনরুদ্ধার করার পরে, আপনি লগ বার্তাগুলি কোথায় আউটপুট করতে হবে তা বলতে পারেন।
কনসোলে লগ পাঠানো: আপনার কনসোলে লগ বার্তা প্রদর্শন করতে, আপনি একটি মৌলিক হ্যান্ডলার যোগ করুন। স্ট্যান্ডার্ড আউটপুট (
stdout
) এ লগগুলিকে কীভাবে নির্দেশ করা যায় তা এখানে রয়েছে:এবং এখানে একটি মৌলিক হ্যান্ডলার কিভাবে সেট করবেন যা লগারকে
stdout
এ প্রিন্ট করতে বলবে:import sys # Assuming 'logger' was retrieved as per previous instructions logger.addHandler(logging.StreamHandler(sys.stdout))
আপনি যদি স্ট্যান্ডার্ড ত্রুটিতে লগ পাঠাতে পছন্দ করেন (
stderr
), যা প্রায়শই ত্রুটি বার্তা এবং সতর্কতার জন্য ব্যবহৃত হয়:import sys # Assuming 'logger' was retrieved as per previous instructions logger.addHandler(logging.StreamHandler(sys.stderr))
প্রোগ্রামগতভাবে অন্যান্য লগিং সেটিংস কনফিগার করা: একবার আপনার লগার অবজেক্টটি হয়ে গেলে, আপনি পাইথনের অন্তর্নির্মিত লগিং মডিউল ব্যবহার করে অন্যান্য লগিং সেটিংসও প্রোগ্রাম্যাটিকভাবে পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, লগিং লেভেলকে
DEBUG
এ পরিবর্তন করতে (যা আরও বিস্তারিত বার্তা দেখাবে):logger.setLevel(logging.DEBUG)
লগ লেভেল
ক্লায়েন্ট কয়েকটি ভিন্ন স্তরে লগ তৈরি করে এবং আপনি নীচের কিছু বা সমস্ত দেখতে আপনার কনফিগারেশন সেট করতে পারেন:
স্তর | সফল অনুরোধ | ব্যর্থ অনুরোধ |
---|---|---|
DEBUG | JSON হিসাবে সম্পূর্ণ অনুরোধ এবং প্রতিক্রিয়া বস্তু সহ একটি বিস্তারিত লগ। | JSON হিসাবে সম্পূর্ণ অনুরোধ এবং ব্যতিক্রম বস্তু সহ একটি বিস্তারিত লগ। |
INFO | নির্দিষ্ট অনুরোধ এবং প্রতিক্রিয়া ক্ষেত্র সহ একটি সংক্ষিপ্ত সারসংক্ষেপ। | JSON হিসাবে সম্পূর্ণ অনুরোধ এবং ব্যতিক্রম বস্তু সহ একটি বিস্তারিত লগ। |
WARNING | কোনোটিই নয় | নির্দিষ্ট অনুরোধের তথ্য, ব্যতিক্রম অবস্থা এবং বার্তা সহ একটি সংক্ষিপ্ত সারাংশ। |
যেহেতু পাইথন লগিং ফ্রেমওয়ার্ক লগ বার্তাগুলিকে উপেক্ষা করে যেগুলি কনফিগার করা স্তরের চেয়ে কম গুরুতর, WARNING
সেট করার অর্থ হল আপনি শুধুমাত্র ব্যর্থ অনুরোধগুলির সাথে সম্পর্কিত সংক্ষিপ্ত বার্তাগুলি দেখতে পাবেন, কিন্তু DEBUG
সেট করার অর্থ হল আপনি উপরের টেবিলে সমস্ত সম্ভাব্য ধরনের লগ দেখতে পাবেন৷
ফাইল লগিং
আপনি যখন আপনার কমান্ড লাইন থেকে get_campaigns.py
এর মতো উদাহরণ স্ক্রিপ্টগুলি চালান, তখন সাধারণত কনসোলে প্রিন্ট করা যেকোনো লগ বার্তা একটি ফাইলে পুনঃনির্দেশিত (বা "পাইপড") হতে পারে। এটি আপনার অপারেটিং সিস্টেমের শেলের একটি বৈশিষ্ট্য, পাইথন লাইব্রেরি নয়। এখানে কিভাবে:
একটি ফাইলে স্ট্যান্ডার্ড আউটপুট (বেশিরভাগ লগ) সংরক্ষণ করতে (এটি ওভাররাইট করা হচ্ছে):
python get_campaigns.py -c $CLIENT_ID > campaign_logs.txt
একটি ফাইলে স্ট্যান্ডার্ড আউটপুট যুক্ত করতে:
python get_campaigns.py -c $CLIENT_ID >> campaign_logs.txt
একই ফাইলে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি (ত্রুটি/সতর্কতার জন্য) উভয়ই সংরক্ষণ করতে:
python get_campaigns.py -c $CLIENT_ID > all_logs.txt 2>&1
(বা, কিছু আধুনিক শেল যেমন Bash 4+ এ):
python get_campaigns.py -c $CLIENT_ID &> all_logs.txt
লগিং ইন্টারসেপ্টর
পাইথন ক্লায়েন্ট লাইব্রেরি জিআরপিসি ইন্টারসেপ্টর ব্যবহার করে অনুরোধ এবং প্রতিক্রিয়ার বিবরণ অ্যাক্সেস এবং লগ করতে। আপনি কাস্টম লজিক সহ একটি gRPC ইন্টারসেপ্টর তৈরি করে আপনার নিজস্ব কাস্টম লগিং সেট আপ করতে পারেন। আরও বিশদ বিবরণের জন্য লগিং গাইড দেখুন এবং একটি কাস্টম লগিং ইন্টারসেপ্টরের উদাহরণ দেখুন।