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

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

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

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

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

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 इंटरसेप्टर बनाकर, अपनी कस्टम लॉगिंग सेट अप की जा सकती है. ज़्यादा जानकारी और कस्टम लॉगिंग इंटरसेप्टर के उदाहरण के लिए, लॉगिंग गाइड देखें.