python - 如何将日志从 tweepy 模块打印到标准输出
问题描述
我正在使用以下代码打印所有日志记录:
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 有on_connect
,StreamListener
默认不记录:
https ://github.com/tweepy/tweepy/blob/v3.10.0/tweepy/streaming.py#L35-L42
该Stream.on_connect
代码来自主分支上的开发版本。
当使用 v3.10 进行流式传输时,Tweepy 将使用日志记录的唯一时间是接收到未知消息类型时。
推荐阅读
- php - 每天显示的所有事件
- javascript - 从 base64 字符串生成文件
- asp.net-core - 表达式参数未显示在生成的 Swagger 文档中
- azure - Azure 媒体服务 - 使用 v3 编码 4K UHD 视频
- c# - 如何从已销毁的外部游戏对象执行协程
- aframe - A-Frame“开始体验”按钮
- ruby-on-rails - 在相关集合上使用 send()
- javascript - 使用 TypeORM 迁移如何在迁移期间为列播种
- scala - 在 Scala 中使用 For Comprehension 在 If 测试后仅使用 flatMap Future[T]
- c# - 使用实体框架从多对多关系中选择数据