これを行うことで、scrapy のログを実行しています。
from scrapy import log
class MySpider(BaseSpider):
name = "myspider"
def __init__(self, name=None, **kwargs):
LOG_FILE = "logs/spider.log"
log.log.defaultObserver = log.log.DefaultObserver()
log.log.defaultObserver.start()
log.started = False
log.start(LOG_FILE, loglevel=log.INFO)
super(MySpider, self).__init__(name, **kwargs)
def parse(self,response):
....
raise Exception("Something went wrong!")
log.msg('Something went wrong!', log.ERROR)
# Somehow write to a separate error log here.
次に、次のようにスパイダーを実行します。
scrapy crawl myspider
これにより、すべての log.INFO データと log.ERROR が に保存されspider.log
ます。
エラーが発生した場合は、それらの詳細を という別のログ ファイルにも保存したいと思いますspider_errors.log
。spider.log
ファイル全体 (巨大になる可能性があります)をスキャンするよりも、発生したエラーを簡単に検索できます。
これを行う方法はありますか?
編集:
PythonLoggingObserver を試す:
def __init__(self, name=None, **kwargs):
LOG_FILE = 'logs/spider.log'
ERR_File = 'logs/spider_error.log'
observer = log.log.PythonLoggingObserver()
observer.start()
log.started = False
log.start(LOG_FILE, loglevel=log.INFO)
log.start(ERR_FILE, loglevel=log.ERROR)
しかし、私は得るERROR: No handlers could be found for logger "twisted"