如何关闭aiogram executor在控制台输出的提示信息?
解决aiogram轮询时关闭控制台提示的方法
一、官方参数配置
aiogram的executor.start_polling可以通过日志配置直接屏蔽这类提示:
- 你提到的"Updates were skipped successfully.""Goodbye!"都属于INFO级别的日志,只需调整日志级别,只保留WARNING及以上的输出即可:
import logging # 全局设置日志级别,屏蔽INFO级提示 logging.basicConfig(level=logging.WARNING)
- 若想精准屏蔽aiogram执行器的日志,不影响其他模块输出,可以单独指定日志器:
import logging # 仅针对aiogram执行器设置日志级别 logging.getLogger('aiogram.executor').setLevel(logging.WARNING)
二、无官方参数时的变通方法
如果上述日志配置无法满足需求,可通过重定向输出实现类似/dev/null的效果:
方法1:临时重定向输出流
通过上下文管理器临时把标准输出/错误导向空设备,启动完成后恢复:
import sys from contextlib import contextmanager @contextmanager def suppress_output(): original_stdout = sys.stdout original_stderr = sys.stderr try: with open('/dev/null', 'w') as devnull: sys.stdout = devnull sys.stderr = devnull yield finally: sys.stdout = original_stdout sys.stderr = original_stderr # 启动时使用上下文管理器包裹 if __name__ == '__main__': with suppress_output(): executor.start_polling(dp, skip_updates=True)
注意:此方法会屏蔽所有控制台输出,包括错误信息,需谨慎使用。
方法2:系统层面重定向
如果脚本是通过终端启动,可直接用shell命令重定向输出:
python your_bot.py > /dev/null 2>&1
内容的提问来源于stack exchange,提问作者OscarAkaElvis
相关产品推荐
相关产品推荐

