यह लाइब्रेरी, Google Ads API इंटरैक्शन के लिए कई तरह की लॉगिंग की सुविधा देती है. इनकी मदद से, ये काम किए जा सकते हैं:
- ज़्यादा जानकारी: एपीआई को भेजे गए पूरे अनुरोध और मिले जवाब.
- कम शब्दों में खास जानकारी: एपीआई इंटरैक्शन की खास जानकारी.
लॉगिंग की इन सेटिंग को दो तरीकों से कंट्रोल किया जा सकता है:
- क्लाइंट लाइब्रेरी का कॉन्फ़िगरेशन: अपनी
google-ads.yamlफ़ाइल या एनवायरमेंट वैरिएबल में, लाइब्रेरी के कॉन्फ़िगरेशन के खास विकल्पों का इस्तेमाल करें. - Python की मदद से प्रोग्राम के ज़रिए: सीधे तौर पर कंट्रोल करने के लिए, Python के बिल्ट-इन
loggingफ़्रेमवर्क का इस्तेमाल करें.
google-ads.yaml के ज़रिए कॉन्फ़िगर करना
GoogleAdsClient इंस्टेंस शुरू होने पर, लॉगिंग अपने-आप कॉन्फ़िगर हो जाती है. उदाहरण के लिए, जब load_from_storage को कॉल किया जाता है. शुरू होने पर, लाइब्रेरी:
- यह कुकी, configuration से आपकी तय की गई लॉगिंग सेटिंग को पढ़ती है.
- इन सेटिंग को 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 इंटरसेप्टर बनाकर, अपनी पसंद के मुताबिक लॉगिंग सेट अप की जा सकती है. ज़्यादा जानकारी और कस्टम लॉगिंग इंटरसेप्टर के उदाहरण के लिए, लॉगिंग गाइड देखें.