Logging to specific error log file in scrapy

喜你入骨 提交于 2019-12-03 03:54:00

Just let logging do the job. Try to use PythonLoggingObserver instead of DefaultObserver:

  • configure two loggers (one for INFO and one for ERROR messages) directly in python, or via fileconfig, or via dictconfig (see docs)
  • start it in spider's __init__:

    def __init__(self, name=None, **kwargs):
        # TODO: configure logging: e.g. logging.config.fileConfig("logging.conf")
        observer = log.PythonLoggingObserver()
        observer.start()
    

Let me know if you need help with configuring loggers.

EDIT:

Another option is to start two file log observers in __init__.py:

from scrapy.log import ScrapyFileLogObserver
from scrapy import log


class MySpider(BaseSpider):
    name = "myspider"  

    def __init__(self, name=None, **kwargs):
        ScrapyFileLogObserver(open("spider.log", 'w'), level=logging.INFO).start()
        ScrapyFileLogObserver(open("spider_error.log", 'w'), level=logging.ERROR).start()

        super(MySpider, self).__init__(name, **kwargs)

    ...
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!