代码之家  ›  专栏  ›  技术社区  ›  Bob

无法禁用在Scrapy脚本中记录消息

  •  0
  • Bob  · 技术社区  · 6 年前

    我用的是Scrapy(1.5.0),显然是枕头(5.2.0)。当我运行我的脚本时 scrapy runspider my_scrapy_script.py stdout中充斥着无用的日志消息,例如:

    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 在零碎的设置也没有效果。

    如果我设置 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}
    

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

    3 回复  |  直到 6 年前
        1
  •  1
  •   Thomas Strub    6 年前

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

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

    --loglevel/-L LEVEL
    

    所以可能是

    scrapy runspider my_scrapy_script.py --loglevel WARNING
    
        2
  •  1
  •   jeton    6 年前

    另一种方式

    from scrapy.utils.log import configure_logging
    
    configure_logging(install_root_handler=True)
    logging.disable(50)  # CRITICAL = 50
    

    对于日志级别= Python Logging Levels

    更多信息=> Scrapy Logging

    蜘蛛的另一种方式:

      custom_settings = {
        'LOG_ENABLED': False,
      # ... other settings...
      }
    
        3
  •  0
  •   Pruthvi Kumar    6 年前

    你可以用 LOG_ENABLED=False .您还可以在scrapy调用期间传递设置- scrapy runspider my_scrapy_script.py -s LOG_ENABLED=False

    Scrapy log documentation