यह लाइब्रेरी, 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`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) में भेजना है, तो sys.stderr को logging.StreamHandler पास करें. इसका इस्तेमाल अक्सर
गड़बड़ी के मैसेज और चेतावनियों के लिए किया जाता है:
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 इंटरसेप्टर बनाकर, अपनी पसंद के मुताबिक लॉगिंग सेट अप की जा सकती है. ज़्यादा जानकारी और कस्टम लॉगिंग इंटरसेप्टर के उदाहरण के लिए, लॉगिंग के बारे में बताने वाली गाइड देखें.