如何将日志记录从 tweepy 模块打印到标准输出

How to print logging from tweepy module to stdout

我正在使用以下代码打印所有日志记录:

rootLogger = logging.getLogger()
rootLogger.setLevel(logging.NOTSET)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.NOTSET)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
rootLogger.addHandler(handler)

它在我的脚本中使用的所有模块 urllib3, requests, oauthlib, matplotlib 都工作正常,除了它不打印 tweepy 模块的任何内容。当我使用以下方式打印所有记录器时:

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]

它输出来自其他模块的所有记录器并且:

<Logger tweepy.binder (WARNING)>, 
<Logger tweepy (WARNING)>
<Logger tweepy.auth (WARNING)>, 
<Logger tweepy.cache (WARNING)>, 
<Logger tweepy.streaming (WARNING)>

我希望至少在 tweepy 模块中从中获取日志,因为我知道我已连接:

class Stream:

    ....
    ....

    def on_connect(self):
    """This is called after successfully connecting to the streaming API.
    """
    log.info("Stream connected")

Tweepy v3.10 StreamListener中有on_connect,默认不登录:
https://github.com/tweepy/tweepy/blob/v3.10.0/tweepy/streaming.py#L35-L42

Stream.on_connect 代码来自 master 分支上的开发版本。

使用 v3.10 进行流式传输时,Tweepy 唯一会在收到未知消息类型时使用日志记录。