【问题标题】:How To Turn Off Logging in Scrapy (Python)如何在 Scrapy (Python) 中关闭日志记录
【发布时间】:2016-01-17 03:54:30
【问题描述】:

我使用 Scrapy 创建了一个蜘蛛,但我不知道如何关闭默认日志记录。从the documentation看来,我应该可以通过这样做来关闭它

        logging.basicConfig(level=logging.ERROR)

但这没有任何效果。通过查看 logging.basicConfig() 的代码,我猜这是因为“根记录器配置了处理程序”,但也许我错了。无论如何,谁能解释我需要做什么才能让 Scrapy 不输出通常的内容

        2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF)
        2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF)
        2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto
        2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto

等等?

编辑:正如下面 sirfz 所建议的那样,行

        logging.getLogger('scrapy').setLevel(logging.WARNING)

可用于设置日志记录级别。但是,您似乎必须在蜘蛛的 init 方法(或更高版本)中执行此操作。

【问题讨论】:

    标签: python logging scrapy


    【解决方案1】:

    您可以简单地更改scrapy(或任何其他记录器)的日志记录级别:

    logging.getLogger('scrapy').setLevel(logging.WARNING)
    

    这会禁用所有低于WARNING 级别的日志消息。

    要禁用所有scrapy日志消息,您只需将propagate设置为False

    logging.getLogger('scrapy').propagate = False
    

    这可以防止 scrapy 的日志消息传播到根记录器(使用 basicConfig() 配置时会打印到控制台)

    【讨论】:

    • 感谢您的帮助!我发现只有将它放在我的蜘蛛的 init 中才能设置级别。我正在从脚本运行我的蜘蛛——如果我在开始爬网之前设置了日志记录级别,它(显然)会重置为 INFO。我没有明确地调用“configure_logging”,但我猜 Scrapy 在启动期间正在某个地方这样做。 (?)
    • 我自己从未使用过scrapy,但我猜爬虫正在为logging 应用默认配置,这很奇怪,因为这应该留给用户。
    【解决方案2】:

    您可以在启动脚本时添加-s LOG_ENABLED=False 作为参数。这应该可以解决问题。

    注意:对于 1.1 版本略有改动:-s LOG_ENABLED=0

    【讨论】:

    【解决方案3】:

    您可以简单地添加--nolog 作为使用scrapy 命令启动蜘蛛时的参数
    我正在使用scrapy v1.7.3。 您可以在使用命令的帮助中查看更多信息:

    scrapy --help
    

    【讨论】:

      【解决方案4】:

      logging.basicConfig(**kwargs)

      如果根记录器已经有处理程序,这个函数什么也不做 为其配置。

      Scrapy 为其配置了处理程序,因此这将不起作用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-24
        • 2021-11-23
        • 2012-03-02
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多