如何关闭Scrapy中的日志记录(Python)

时间:2015-10-18 21:44:06

标签: python logging scrapy

我使用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方法(或更高版本)中执行此操作。

4 个答案:

答案 0 :(得分:13)

您只需更改scrapy(或任何其他记录器)的日志记录级别:

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

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

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

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

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

答案 1 :(得分:5)

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

注意:对于版本1.1稍作修改:-s LOG_ENABLED=0

答案 2 :(得分:1)

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

scrapy --help

答案 3 :(得分:0)

  

logging.basicConfig(** kwargs)

     

如果根记录器已经有处理程序,则此函数不执行任何操作   为它配置。

Scrapy已为其配置处理程序,因此无法正常工作