我已经用Scrapy创建了一个spider,但是我不知道如何关闭默认的日志记录。从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)
可以用来设置日志记录级别。但是,您必须在spider的init方法(或以后的方法)中设置日志记录级别。
5条答案
按热度按时间r7knjye21#
您可以简单地更改scrapy(或任何其他记录器)的日志记录级别:
这将禁用所有低于
WARNING
级别的日志消息。要禁用所有零碎日志消息,只需将
propagate
设置为False
:这可以防止scrapy的日志消息传播到根日志程序(当使用
basicConfig()
配置时,根日志程序会打印到控制台)iyr7buue2#
你可以在启动脚本时添加
-s LOG_ENABLED=False
作为参数,这样就可以了。注:对于版本1.1,略有变更:
-s LOG_ENABLED=0
个pcww981p3#
当使用
scrapy
命令启动spider时,您可以简单地添加--nolog
作为参数我使用的是scrapy v1.7.3。您可以在帮助中使用以下命令查看更多信息:
sqserrrh4#
日志记录.basicConfig(**kwargs)
如果根记录器已经配置了处理程序,则此函数不执行任何操作。
Scrapy已为其配置了处理程序,因此此操作将不起作用
35g0bw715#
这可能会有帮助,在document中提到,你可以把这个添加到设置文件中: