लाइब्रेरी, Google Ads API इंटरैक्शन के लिए कई तरह की लॉगिंग उपलब्ध कराती है. इनकी फ़ोटो ली जा सकती है:
- ज़्यादा जानकारी: एपीआई को भेजे गए पूरे अनुरोध और मिले जवाब.
- कम शब्दों में खास जानकारी: एपीआई इंटरैक्शन की खास जानकारी.
लॉगिंग की इन सेटिंग को दो तरीकों से कंट्रोल किया जा सकता है:
- क्लाइंट लाइब्रेरी कॉन्फ़िगरेशन: अपनी
google-ads.yamlफ़ाइल या एनवायरमेंट वैरिएबल में, लाइब्रेरी के खास कॉन्फ़िगरेशन विकल्पों का इस्तेमाल करें. - Python की मदद से प्रोग्राम बनाकर: सीधे तौर पर कंट्रोल करने के लिए, Python के पहले से मौजूद
loggingफ़्रेमवर्क का इस्तेमाल करें.
google-ads.yaml की मदद से कॉन्फ़िगर करना
GoogleAdsClient इंस्टेंस शुरू होने पर, लॉगिंग अपने-आप कॉन्फ़िगर हो जाती है. उदाहरण के लिए, load_from_storage को कॉल करने पर. शुरू होने पर, लाइब्रेरी:
- यह अपने कॉन्फ़िगरेशन से, आपकी तय की गई लॉगिंग सेटिंग को पढ़ता है.
- इन सेटिंग को Python के पहले से मौजूद
logging.config.dictConfigमें पास करता है, ताकि उन्हें चालू किया जा सके.
उदाहरण के लिए, अपनी google-ads.yaml फ़ाइल में logging सेक्शन जोड़ा जा सकता है:
logging:
version: 1
disable_existing_loggers: false
formatters:
default_fmt:
format: '[%(asctime)s - %(levelname)s] %(message).5000s'
datefmt: '%Y-%m-%d %H:%M:%S'
handlers:
default_handler:
class: logging.StreamHandler
formatter: default_fmt
loggers:
'':
handlers: [default_handler]
level: INFO
प्रोग्राम के हिसाब से कॉन्फ़िगर करना
अगर लाइब्रेरी को इंस्टॉल किए गए पैकेज के तौर पर इस्तेमाल किया जा रहा है और आपकी कॉन्फ़िगरेशन फ़ाइल में logging सेक्शन नहीं है, तो लाइब्रेरी की लॉगिंग को अपने ऐप्लिकेशन के लॉगिंग सेटअप के साथ प्रोग्राम के हिसाब से इंटिग्रेट किया जा सकता है. addHandler का इस्तेमाल करके, लाइब्रेरी के लॉगर इंस्टेंस (google.ads.googleads.client) में लॉगिंग हैंडलर अटैच करें और टारगेट लॉग लेवल सेट करें:
import logging
import sys
# Retrieve the library's logger instance.
logger = logging.getLogger("google.ads.googleads.client")
# Direct logs to standard output (stdout).
logger.addHandler(logging.StreamHandler(sys.stdout))
# Set the log level to DEBUG to view detailed messages.
logger.setLevel(logging.DEBUG)
अगर आपको लॉग, स्टैंडर्ड गड़बड़ी (stderr) पर भेजने हैं, तो logging.StreamHandler में sys.stderr पास करें. स्टैंडर्ड गड़बड़ी का इस्तेमाल, आम तौर पर गड़बड़ी के मैसेज और चेतावनियों के लिए किया जाता है:
import logging
import sys
logger = logging.getLogger("google.ads.googleads.client")
logger.addHandler(logging.StreamHandler(sys.stderr))
logger.setLevel(logging.WARNING)
लॉग लेवल
क्लाइंट, गंभीरता के कई लेवल पर लॉग जनरेट करता है. साथ ही, लॉगर को कॉन्फ़िगर करके, इनमें से कुछ या सभी को देखा जा सकता है:
| लेवल | अनुरोध पूरा हो गया | अनुरोध पूरा नहीं किया जा सका |
|---|---|---|
DEBUG |
JSON के तौर पर, पूरे अनुरोध और रिस्पॉन्स ऑब्जेक्ट के साथ एक पूरी जानकारी वाला लॉग. | JSON के तौर पर, पूरे अनुरोध और अपवाद ऑब्जेक्ट के साथ एक पूरी जानकारी वाला लॉग. |
INFO |
अनुरोध और जवाब के खास फ़ील्ड के साथ खास जानकारी. | JSON के तौर पर, पूरे अनुरोध और अपवाद ऑब्जेक्ट के साथ एक पूरी जानकारी वाला लॉग. |
WARNING |
कोई नहीं | अनुरोध की खास जानकारी, अपवाद की स्थिति, और गड़बड़ी के मैसेज के साथ कम शब्दों में दी गई खास जानकारी. |
Python लॉगिंग फ़्रेमवर्क, कॉन्फ़िगर किए गए लेवल से कम गंभीर लॉग मैसेज को अनदेखा करता है. इसलिए, लेवल को WARNING पर सेट करने से, सिर्फ़ उन अनुरोधों के लिए कम शब्दों में मैसेज दिखते हैं जो पूरे नहीं हो पाए. वहीं, लेवल को DEBUG पर सेट करने से, टेबल में सभी तरह के लॉग दिखते हैं.
किसी फ़ाइल में लॉग करना
लॉग को किसी फ़ाइल में लिखा जा सकता है. इसके लिए, Python में प्रोग्राम बनाकर या कमांड लाइन से आउटपुट को रीडायरेक्ट करके ऐसा किया जा सकता है.
Python में किसी फ़ाइल में लॉग करना
Python से सीधे किसी फ़ाइल में लॉग लिखने के लिए, क्लाइंट लॉगर में logging.FileHandler अटैच करें:
import logging
logger = logging.getLogger("google.ads.googleads.client")
file_handler = logging.FileHandler("google_ads.log")
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)
शेल का इस्तेमाल करके आउटपुट को रीडायरेक्ट करना
कमांड लाइन से get_campaigns.py जैसी उदाहरण स्क्रिप्ट चलाने पर, अपने ऑपरेटिंग सिस्टम के शेल का इस्तेमाल करके, कंसोल लॉग आउटपुट को किसी फ़ाइल पर रीडायरेक्ट किया जा सकता है.
स्टैंडर्ड आउटपुट को किसी फ़ाइल में सेव करने के लिए (किसी मौजूदा फ़ाइल को ओवरराइट करना):
python get_campaigns.py -c $CUSTOMER_ID > campaign_logs.txt
किसी मौजूदा फ़ाइल में स्टैंडर्ड आउटपुट जोड़ने के लिए:
python get_campaigns.py -c $CUSTOMER_ID >> campaign_logs.txt
स्टैंडर्ड आउटपुट और स्टैंडर्ड गड़बड़ी (गड़बड़ियों और चेतावनियों के लिए), दोनों को एक ही फ़ाइल में सेव करने के लिए:
python get_campaigns.py -c $CUSTOMER_ID > all_logs.txt 2>&1
इसके अलावा, Bash 4+ पर:
python get_campaigns.py -c $CUSTOMER_ID &> all_logs.txt
कस्टम gRPC इंटरसेप्टर
Python क्लाइंट लाइब्रेरी, अनुरोध और जवाब की जानकारी को ऐक्सेस और लॉग करने के लिए, gRPC इंटरसेप्टर का इस्तेमाल करती है. कस्टम लॉजिक के साथ gRPC इंटरसेप्टर बनाकर, अपनी पसंद के मुताबिक लॉगिंग सेट अप की जा सकती है. ज़्यादा जानकारी और कस्टम लॉगिंग इंटरसेप्टर का उदाहरण देखने के लिए, लॉगिंग गाइड देखें.