【问题标题】:How to print logging from tweepy module to stdout如何将日志从 tweepy 模块打印到标准输出
【发布时间】:2023-04-06 03:22:01
【问题描述】:

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

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?
  • @Harmon758 3.10.0

标签: python logging tweepy python-logging


【解决方案1】:

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 将使用日志记录的唯一时间是收到未知消息类型时。

【讨论】:

猜你喜欢
  • 2020-03-16
  • 2018-01-09
  • 2016-05-31
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 2016-07-27
相关资源
最近更新 更多