首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法禁用刮除脚本中的日志记录消息

无法禁用刮除脚本中的日志记录消息
EN

Stack Overflow用户
提问于 2018-07-11 12:01:39
回答 4查看 2.9K关注 0票数 2

我使用刮伤(1.5.0),这显然是使用枕头(5.2.0)。当我使用scrapy runspider my_scrapy_script.py运行我的脚本时,stdout会被无用的日志消息淹没,例如:

代码语言:javascript
复制
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 ...

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

代码语言:javascript
复制
logger = logging.getLogger('PIL.Image').setLevel(logging.WARNING)

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

代码语言:javascript
复制
logger = logging.getLogger().setLevel(logging.WARNING)

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

在刮擦设置中设置LOG_LEVEL = logging.WARNING甚至LOG_ENABLED = False也没有任何影响。

如果我将LOG_LEVEL设置为'INFO',它将打印

代码语言:javascript
复制
2018-07-11 07:04:42 [scrapy.crawler] INFO: Overridden settings: {'LOG_ENABLED': False, 'LOG_LEVEL': 'INFO', 'SPIDER_LOADER_WARN_ONLY': True}

因此,上面提到的洪水似乎是在加载脚本之前产生的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-11 12:24:53

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

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

代码语言:javascript
复制
--loglevel/-L LEVEL

所以有可能是

代码语言:javascript
复制
scrapy runspider my_scrapy_script.py --loglevel WARNING
票数 4
EN

Stack Overflow用户

发布于 2018-10-02 20:22:35

另一种方式

代码语言:javascript
复制
from scrapy.utils.log import configure_logging

configure_logging(install_root_handler=True)
logging.disable(50)  # CRITICAL = 50

用于日志记录级别= Python日志记录级别

更多信息=> 刮屑测井

蜘蛛的另一种方式:

代码语言:javascript
复制
  custom_settings = {
    'LOG_ENABLED': False,
  # ... other settings...
  }
票数 1
EN

Stack Overflow用户

发布于 2019-12-12 12:38:19

正如@Lodi在一个问题的评论中所建议的那样,我只能解决Scrapy在使用芹菜的Django项目中用产品上的调试消息(包括所有被刮过的页面的HTML )填充日志的问题,禁用了刮擦记录器的传播。所以,我做的是:

settings.py:

代码语言:javascript
复制
import logging
if not DEBUG:
    logging.getLogger('scrapy').propagate = False

另外,我让我的蜘蛛使用一个从‘刮伤’记录器派生出来的记录器,因为CrawlSpider.logger不是‘刮伤’记录器的后代。因此,在本例中,我使用scrapy.spiders记录器记录从CrawlSpider继承的Spider中的消息。

代码语言:javascript
复制
logger = logging.getLogger('scrapy.spiders')

然后与logger.debug()logger.info()等一起使用。

请记住,记录的消息的严重程度高于debuginfo,即:warningerrorcriticalexception将被传播--在scrapy记录器中禁用。因此,您仍然会看到记录的DropItem异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51284987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档