Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 spider关闭时如何发送日志_Python 2.7_Logging_Scrapy - Fatal编程技术网

Python 2.7 spider关闭时如何发送日志

Python 2.7 spider关闭时如何发送日志,python-2.7,logging,scrapy,Python 2.7,Logging,Scrapy,我想在spider关闭时将日志发送到电子邮件 我知道如何发送电子邮件,我有一个电子邮件分机 我知道如何将日志保存到文件中 但我不知道如何直接将日志写入电子邮件body 请帮帮我 这是我的蜘蛛 #! -*- encoding: utf-8 -*- from scrapy.spiders import Spider import logging from datetime import datetime logger = logging.getLogger(__name__) logger.set

我想在spider关闭时将日志发送到电子邮件
我知道如何发送电子邮件,我有一个电子邮件分机
我知道如何将日志保存到文件中

但我不知道如何直接将日志写入电子邮件
body

请帮帮我

这是我的蜘蛛

#! -*- encoding: utf-8 -*-
from scrapy.spiders import Spider
import logging
from datetime import datetime

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

handler = logging.FileHandler('../logs/test.log')
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

class MySpider(Spider):
    name = "abctest"
    start_urls = ["https://www.google.com.tw"]

    def __init__(self,**kwargs):
        super(MySpider, self).__init__()

    def parse(self, response):
        logger.info("info1")
        logger.info("info2")
        logger.info("info3")
        logger.error("error2")
        logger.error("error3")
它将写入
test.log

2015-10-01 14:35:02,075 - test.spiders.e_test - INFO - info1
2015-10-01 14:35:02,075 - test.spiders.e_test - INFO - info2
2015-10-01 14:35:02,076 - test.spiders.e_test - INFO - info3
2015-10-01 14:35:02,076 - test.spiders.e_test - ERROR - error2
2015-10-01 14:35:02,076 - test.spiders.e_test - ERROR - error3
我想使用下面的分机发送电子邮件
但我仍然不知道如何将日志写入
body

# -*- coding: utf-8 -*-
from scrapy import signals

def send_email(user, pwd, recipient, subject, body):
    import smtplib
    gmail_user = user
    gmail_pwd = pwd
    FROM = user
    TO = recipient if type(recipient) is list else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(gmail_user, gmail_pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print 'successfully sent the mail'
    except:
        print "failed to send mail"


class Mail(object):
    @classmethod
    def from_crawler(cls, crawler):
        ext = cls()
        crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
        #crawler.signals.connect(ext.spider_error, signal=signals.spider_error)
        return ext

    def spider_closed(self, spider, reason):
        send_email("test@gmail.com","pass","test@gmail.com",
                   subject='No item scraped on %s' % spider.name,
                   body='No item scraped on %s' % spider.start_urls)