【发布时间】:2016-02-02 11:07:26
【问题描述】:
我正在使用 CrawlerProcess 类从使用 Core API 的脚本运行 Scrapy。根据文档,当以这种方式运行蜘蛛时,Scrapy 可以使用configure_logging 函数配置日志记录。然后我将如何获得 Scrapy 记录器(所以我可以添加处理程序和过滤器?)。看起来 Scrapy 在使用配置文件时使用了根记录器,是否可以针对此用例将其重定向到单独的记录器?
【问题讨论】:
我正在使用 CrawlerProcess 类从使用 Core API 的脚本运行 Scrapy。根据文档,当以这种方式运行蜘蛛时,Scrapy 可以使用configure_logging 函数配置日志记录。然后我将如何获得 Scrapy 记录器(所以我可以添加处理程序和过滤器?)。看起来 Scrapy 在使用配置文件时使用了根记录器,是否可以针对此用例将其重定向到单独的记录器?
【问题讨论】:
您不需要为此目的获取记录器。只需将设置字典传递给scrapy.utils.log.dictConfig。见https://docs.python.org/2/library/logging.config.html#logging.config.dictConfig。您可以使用scrapy.utils.log.DEFAULT_LOGGING 作为参考:
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'loggers': {
'scrapy': {
'level': 'DEBUG',
},
'twisted': {
'level': 'ERROR',
},
}
}
例如,
from scrapy.utils import log
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
})
log.dictConfig({
'version': 1,
'disable_existing_loggers': True,
'loggers': {
'scrapy': {
'level': 'ERROR',
}
}
})
另外,如果您只想减少冗长,请查看LOG_LEVEL Scrapy 设置。
【讨论】:
dictConfig,但只有在CrawlerProcess 被初始化之后。我会更新我的答案。