[英]Logging to specific error log file in scrapy
我通过这样做运行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"
让日志记录完成工作。 尝试使用PythonLoggingObserver
而不是DefaultObserver
:
INFO
,一个用于ERROR
消息)(参见docs ) 在spider的__init__
启动它:
def __init__(self, name=None, **kwargs): # TODO: configure logging: eg logging.config.fileConfig("logging.conf") observer = log.PythonLoggingObserver() observer.start()
如果您需要有关配置记录器的帮助,请告诉我们。
编辑:
另一种选择是在__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)
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.