Во-вторых, в документах написано The logging service must be explicitly
started through the scrapy.log.start() function
. Мой вопрос, где
запустить этот scrapy.log.start ()? Это внутри моего паука?
Если вы запускаете паука, используя scrapy crawl my_spider
- журнал запускается автоматически, если STATS_ENABLED = True
Если вы запустите процесс искателя вручную, вы можете сделать scrapy.log.start()
перед запуском процесса искателя.
from scrapy.crawler import CrawlerProcess
from scrapy.conf import settings
settings.overrides.update({}) # your settings
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()
crawlerProcess.crawl(spider) # your spider here
log.start() # depends on LOG_ENABLED
print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."
Немного знаний о вашем первом вопросе:
Поскольку вы должны запускать журнал Scrapy вручную, это позволяет вам использовать свой собственный регистратор.
Я думаю, что вы можете скопировать модуль scrapy/scrapy/log.py
в источниках scrapy, изменить его, импортировать вместо scrapy.log
и запустить start()
- scrapy будет использовать ваш журнал. В ней есть строка в функции start()
, которая говорит log.startLoggingWithObserver(sflo.emit, setStdout=logstdout)
.
Создайте своего собственного наблюдателя (http://docs.python.org/howto/logging-cookbook.html#logging-to-multiple-destinations) и используйте его там.