Enviando itens e logs por e-mail com o Scrapy

Estou tentando fazer com que Scrapy me envie um e-mail quando um rastreador terminar ou quebrar. Já existe uma extensão interna para o envio de estatísticas, mas gostaria de anexar os erros da aranha como<spidername>-errors.log e os itens raspados como<spidername>-items.json.

Eu conectei callbacks para cada um dos sinais, mas por algum motivo apenas o último está disparando:

from scrapy import signals
from scrapy.mail import MailSender
from scrapy.exceptions import NotConfigured
from scrapy.utils.serialize import ScrapyJSONEncoder

from collections import defaultdict

try:
    from cStringIO import cStringIO as StringIO
except ImportError:
    from StringIO import StringIO

class StatusMailer(object):
    def __init__(self, recipients, mail, crawler):
        self.recipients = recipients
        self.mail = mail
        self.files = defaultdict(StringIO)
        self.encoder = ScrapyJSONEncoder(crawler=crawler)

    @classmethod
    def from_crawler(cls, crawler):
        recipients = crawler.settings.getlist("STATUSMAILER_RCPTS")

        if not recipients:
            raise NotConfigured

        mail = MailSender.from_settings(crawler.settings)
        instance = cls(recipients, mail, crawler)

        crawler.signals.connect(instance.item_scraped, signal=signals.item_scraped)
        crawler.signals.connect(instance.spider_error, signal=signals.spider_error)
        crawler.signals.connect(instance.spider_closed, signal=signals.spider_closed)

        return instance

    def item_scraped(self, item, response, spider):
        self.files[spider.name + '.json'].write(self.encoder.encode(item) + '\n')

    def spider_error(self, failure, response, spider):
        self.files[spider.name + '-errors.log'].write(failure.getTraceback() + '\n')

    def spider_closed(self, spider):
        return self.mail.send(
            to=self.recipients,
            subject="Crawler for %s finished" % spider.name,
            body="",
            attachs=[(name, 'text/plain', contents) for name, contents in self.files.items()]
        )

Existe alguma maneira de acessar os itens exportados e erros da aranha de dentro do Scrapy (possivelmente fazendo algum tipo de gancho para interceptar essas mensagens antes de serem impressas no console)?

questionAnswers(1)

yourAnswerToTheQuestion