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

Dr.*_*ain 13 python logging scrapy

我使用Scrapy创建了一个蜘蛛,但我无法弄清楚如何关闭默认日志记录.从文档中可以看出,我应该可以通过这样做来关闭它

        logging.basicConfig(level=logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

但这没有效果.从查看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
Run Code Online (Sandbox Code Playgroud)

等等.?

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

        logging.getLogger('scrapy').setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

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

sir*_*rfz 18

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

logging.getLogger('scrapy').setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

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

要禁用所有scrapy日志消息,您只需设置propagateFalse:

logging.getLogger('scrapy').propagate = False
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢您的帮助!我已经发现只有当我把它放在蜘蛛的__init__中时才设置水平.我正在从脚本运行我的蜘蛛 - 如果我在开始爬行之前设置了日志记录级别,它(显然)会重置为INFO.我没有明确地调用"configure_logging",但我猜Scrapy在启动期间正在做某事.(?) (4认同)

小智 7

您可以-s LOG_ENABLED=False在启动脚本时添加为参数。这应该够了吧。

注意:对于1.1版,更改了一些:-s LOG_ENABLED=0