我使用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方法(或更高版本)中执行此操作。
答案 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已为其配置处理程序,因此无法正常工作