首页 > 解决方案 > 无法在scrapy脚本中禁用日志记录消息

问题描述

我正在使用scrapy(1.5.0),它显然使用了Pillow(5.2.0)。当我使用scrapy runspider my_scrapy_script.py标准输出运行脚本时,会被无用的日志消息淹没,例如:

2018-07-11 14:41:07 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: scrapybot)
2018-07-11 14:41:07 [PIL.Image] DEBUG: Importing BlpImagePlugin
2018-07-11 14:41:07 [PIL.Image] DEBUG: Importing BmpImagePlugin
2018-07-11 14:41:07 [PIL.Image] DEBUG: Importing BufrStubImagePlugin
2018-07-11 14:41:07 [PIL.Image] DEBUG: Importing CurImagePlugin
... many more of the like ...

我尝试通过设置记录器级别来禁用它们,如下所示:

logger = logging.getLogger('PIL.Image').setLevel(logging.WARNING)

等等,它没有帮助,我尝试像这样设置根记录器级别:

logger = logging.getLogger().setLevel(logging.WARNING)

也没有效果,更高的水平也无济于事

设置LOG_LEVEL = logging.WARNING甚至LOG_ENABLED = False在scrapy设置中也没有效果。

如果我设置LOG_LEVEL'INFO'打印

2018-07-11 07:04:42 [scrapy.crawler] INFO: Overridden settings: {'LOG_ENABLED': False, 'LOG_LEVEL': 'INFO', 'SPIDER_LOADER_WARN_ONLY': True}

所以看起来上面提到的洪水是在脚本加载之前产生的

标签: pythonscrapy

解决方案


根据文档从一个附加参数开始:

https://doc.scrapy.org/en/latest/topics/logging.html

--loglevel/-L LEVEL

所以它可能是

scrapy runspider my_scrapy_script.py --loglevel WARNING

推荐阅读