लॉगिंग की सुविधा चालू करना

यह लाइब्रेरी, Google Ads API के साथ होने वाले इंटरैक्शन की लॉगिंग की सुविधा देती है. इन चीज़ों को कैप्चर किया जा सकता है:

  • ज़्यादा जानकारी: एपीआई को भेजे गए पूरे अनुरोध और मिले हुए जवाब.
  • खास जानकारी: इंटरैक्शन की खास जानकारी.

लॉगिंग की इन सेटिंग को दो तरीकों से कंट्रोल किया जा सकता है:

  • क्लाइंट लाइब्रेरी कॉन्फ़िगरेशन: लाइब्रेरी के खास कॉन्फ़िगरेशन विकल्पों का इस्तेमाल करें.
  • Python की मदद से प्रोग्राम के ज़रिए: ज़्यादा सीधे कंट्रोल के लिए, Python के बिल्ट-इन लॉगिंग फ़्रेमवर्क का इस्तेमाल करें.

GoogleAdsClient इंस्टेंस के शुरू होने पर, लॉगिंग अपने-आप कॉन्फ़िगर हो जाती है. उदाहरण के लिए, load_from_storage तरीके का इस्तेमाल करने पर, यह शुरू होने वाला चरण होता है. इस समय, लाइब्रेरी:

  • अपने कॉन्फ़िगरेशन से, लॉगिंग की आपकी बताई गई सेटिंग पढ़ेगी.
  • इन सेटिंग को चालू करने के लिए, Python के बिल्ट-इन 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))
    
  • प्रोग्राम के ज़रिए लॉगिंग की अन्य सेटिंग कॉन्फ़िगर करना: लॉगर ऑब्जेक्ट मिलने के बाद, Python के बिल्ट-इन logging मॉड्यूल का इस्तेमाल करके, प्रोग्राम के ज़रिए लॉगिंग की अन्य सेटिंग भी बदली जा सकती हैं. उदाहरण के लिए, लॉगिंग लेवल को DEBUG पर बदलने के लिए (इससे ज़्यादा जानकारी वाले मैसेज दिखेंगे):

    logger.setLevel(logging.DEBUG)
    

लॉग लेवल

क्लाइंट, अलग-अलग लेवल पर लॉग जनरेट करता है. कॉन्फ़िगरेशन सेट करके, इनमें से कुछ या सभी लॉग देखे जा सकते हैं:

लेवल अनुरोध पूरा हुआ अनुरोध पूरा नहीं किया जा सका
DEBUG JSON के तौर पर, अनुरोध और जवाब के पूरे ऑब्जेक्ट के साथ, ज़्यादा जानकारी वाला लॉग. JSON के तौर पर, अनुरोध और अपवाद के पूरे ऑब्जेक्ट के साथ, ज़्यादा जानकारी वाला लॉग.
INFO अनुरोध और जवाब के खास फ़ील्ड के साथ, खास जानकारी. JSON के तौर पर, अनुरोध और अपवाद के पूरे ऑब्जेक्ट के साथ, ज़्यादा जानकारी वाला लॉग.
WARNING कोई नहीं अनुरोध की खास जानकारी, अपवाद की स्थिति, और मैसेज के साथ, खास जानकारी.

Python का लॉगिंग फ़्रेमवर्क, कॉन्फ़िगर किए गए लेवल से कम गंभीर लॉग मैसेज को अनदेखा करता है. इसलिए, WARNING पर सेट करने का मतलब है कि आपको सिर्फ़ अनुरोध पूरे न होने से जुड़े खास मैसेज दिखेंगे. वहीं, DEBUG पर सेट करने का मतलब है कि आपको ऊपर दी गई टेबल में सभी तरह के लॉग दिखेंगे.

फ़ाइल में लॉग करना

कमांड लाइन से get_campaigns.py जैसे स्क्रिप्ट के उदाहरण चलाने पर, कंसोल पर प्रिंट होने वाले किसी भी लॉग मैसेज को किसी फ़ाइल पर रीडायरेक्ट किया जा सकता है. इसे "पाइप" करना भी कहा जाता है. यह आपके ऑपरेटिंग सिस्टम के शेल की एक सुविधा है. यह Python लाइब्रेरी की सुविधा नहीं है. इसके लिए यह तरीका अपनाएं:

स्टैंडर्ड आउटपुट (ज़्यादातर लॉग) को किसी फ़ाइल में सेव करने के लिए (उस पर सेव डेटा को मिटाकर):

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

लॉगिंग इंटरसेप्टर

Python क्लाइंट लाइब्रेरी, अनुरोध और जवाब की जानकारी को ऐक्सेस करने और लॉग करने के लिए, gRPC इंटरसेप्टर का इस्तेमाल करती है. कस्टम लॉजिक वाला gRPC इंटरसेप्टर बनाकर, अपनी पसंद के मुताबिक लॉगिंग सेट अप की जा सकती है. ज़्यादा जानकारी और कस्टम लॉगिंग इंटरसेप्टर के उदाहरण के लिए, लॉगिंग गाइड देखें.