লগিং সক্ষম করুন

এই লাইব্রেরিটি গুগল অ্যাডস এপিআই ইন্টারঅ্যাকশনের জন্য বহুমুখী লগিং প্রদান করে। আপনি ক্যাপচার করতে পারেন:

  • বিস্তারিত তথ্য: এপিআই-তে পাঠানো সম্পূর্ণ অনুরোধ এবং প্রাপ্ত প্রতিক্রিয়া।
  • সংক্ষিপ্ত সারাংশ: পারস্পরিক ক্রিয়া-প্রতিক্রিয়াগুলোর একটি সার্বিক ধারণা।

এবং আপনি এই লগিং সেটিংস দুটি উপায়ে নিয়ন্ত্রণ করতে পারেন:

  • ক্লায়েন্ট লাইব্রেরি কনফিগারেশন: লাইব্রেরির নির্দিষ্ট কনফিগারেশন অপশনগুলো ব্যবহার করুন।
  • পাইথনের মাধ্যমে প্রোগ্রাম্যাটিকভাবে: আরও সরাসরি নিয়ন্ত্রণের জন্য পাইথনের বিল্ট-ইন লগিং ফ্রেমওয়ার্ক ব্যবহার করুন।

যখন একটি 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

(অথবা, ব্যাশ ৪+ এর মতো কিছু আধুনিক শেলে):

python get_campaigns.py -c $CLIENT_ID &> all_logs.txt

লগিং ইন্টারসেপ্টর

পাইথন ক্লায়েন্ট লাইব্রেরি অনুরোধ এবং প্রতিক্রিয়ার বিবরণ অ্যাক্সেস ও লগ করার জন্য gRPC ইন্টারসেপ্টর ব্যবহার করে। আপনি কাস্টম লজিক সহ একটি gRPC ইন্টারসেপ্টর তৈরি করে আপনার নিজস্ব কাস্টম লগিং সেট আপ করতে পারেন। আরও বিস্তারিত তথ্যের জন্য এবং একটি কাস্টম লগিং ইন্টারসেপ্টরের উদাহরণের জন্য লগিং গাইড দেখুন।