从 Python class 中的静态方法全局打开 httplib 日志记录?

Turn on httplib logging globally from a static method in a Python class?

我有这个 class 可以为请求使用的 httplib 库打开详细日志记录。我想在 运行 任何请求代码之前调用它并打开日志记录。但是,在我调用它之后,日志记录没有打开。如果我从静态方法中取出代码并将其放在主 python 文件和 运行 中的函数中,那么它就可以工作了。但是我希望它被打包成一个 class 和一个静态方法。

import logging
import http.client

class HttpClientUtilities:

    @staticmethod
    def enable_logging(level=logging.DEBUG):

        global http

        httpclient_logger = logging.getLogger("http.client")

        """Enable HTTPConnection debug logging to the logging framework"""

        def httpclient_log(*args):
            httpclient_logger.log(level, " ".join(args))

        # mask the print() built-in in the http.client module to use
        # logging instead
        http.client.print = httpclient_log
        # enable debugging
        http.client.HTTPConnection.debuglevel = 1

我这样称呼它:

from HttpClientUtilities import HttpClientUtilities

HttpClientUtilities.enable_logging()

#then here i run some methods from other classes which use the requests library

在 enable_logging 方法中我使用了全局 http 所以它应该引用全局 http 对象...

我在这里找到了一个更简单的解决方案:

通过覆盖默认调试级别:

# You'll need to do this before urllib3 creates any http connection objects
import http.client
http.client.HTTPConnection.debuglevel = 5