python - रथम - सार्वजनिक पुस्तकालय lucknow उत्तर प्रदेश




मैं अनुरोध पुस्तकालय से लॉग संदेश कैसे अक्षम करूं? (6)

डिफ़ॉल्ट रूप से, Requests पाइथन लाइब्रेरी कंसोल पर लॉग संदेश लिखता है, इनके साथ:

Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606

मुझे आमतौर पर इन संदेशों में दिलचस्पी नहीं है, और उन्हें अक्षम करना चाहते हैं। उन संदेशों को चुप करने या अनुरोधों की शब्दावली को कम करने का सबसे अच्छा तरीका क्या होगा?


अगर आपके पास कॉन्फ़िगरेशन फ़ाइल है, तो आप इसे कॉन्फ़िगर कर सकते हैं।

लॉगर्स अनुभाग में urllib3 जोड़ें:

[loggers]
keys = root, urllib3

Logger_urllib3 अनुभाग जोड़ें:

[logger_urllib3]
level = WARNING
handlers =
qualname = requests.packages.urllib3.connectionpool

मुझे आपके जैसे समस्या होने के बाद, या दो सप्ताह पहले मैंने जो प्रलेखन अनुभाग लिखा था उसे कॉपी / पेस्ट करने दें:

import requests
import logging

# these two lines enable debugging at httplib level (requests->urllib3->httplib)
# you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
# the only thing missing will be the response.body which is not logged.
import httplib
httplib.HTTPConnection.debuglevel = 1

logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

requests.get('http://httpbin.org/headers')

मैंने पाया कि अनुरोध के लॉगिंग स्तर को कॉन्फ़िगर कैसे करें, यह मानक logging मॉड्यूल के माध्यम से किया जाता है। मैंने संदेशों को लॉग इन करने के लिए इसे कॉन्फ़िगर करने का निर्णय लिया जबतक कि वे कम से कम चेतावनियां न हों:

import logging

logging.getLogger("requests").setLevel(logging.WARNING)

यदि आप urllib3 लाइब्रेरी (आमतौर पर अनुरोधों द्वारा उपयोग किए गए) के लिए इस सेटिंग को लागू करना चाहते हैं, तो निम्न जोड़ें:

logging.getLogger("urllib3").setLevel(logging.WARNING)

यदि आप यहां किसी भी (संभावित रूप से गहराई से घोंसला वाले) मॉड्यूल के लॉगिंग को संशोधित करने का एक तरीका ढूंढ रहे हैं, तो लॉगिंग का उपयोग करें। logging.Logger.manager.loggerDict ऑब्जेक्ट्स का एक शब्दकोश प्राप्त करने के लिए डिक्ट करें, जिसे आप logging.getLogger लिए तर्क के रूप में उपयोग कर सकते हैं logging.getLogger :

import requests
import logging
for key in logging.Logger.manager.loggerDict:
    print(key)
# requests.packages.urllib3.connectionpool
# requests.packages.urllib3.util
# requests.packages
# requests.packages.urllib3
# requests.packages.urllib3.util.retry
# PYREADLINE
# requests
# requests.packages.urllib3.poolmanager

logging.getLogger('requests').setLevel(logging.CRITICAL)
# Could also use the dictionary directly:
# logging.Logger.manager.loggerDict['requests'].setLevel(logging.CRITICAL)

सरल: केवल import requests बाद requests.packages.urllib3.disable_warnings() जोड़ें


logging.config.dictConfig का उपयोग कर किसी के लिए आप इस तरह के शब्दकोश में अनुरोध लाइब्रेरी लॉग स्तर को बदल सकते हैं:

'loggers': {
    '': {
        'handlers': ['file'],
        'level': level,
        'propagate': False
    },
    'requests.packages.urllib3': {
        'handlers': ['file'],
        'level': logging.WARNING
    }
}




verbosity