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
Python 登录Scrapy_Python_Logging_Documentation_Scrapy - Fatal编程技术网

Python 登录Scrapy

Python 登录Scrapy,python,logging,documentation,scrapy,Python,Logging,Documentation,Scrapy,我在登录scrapy时遇到了问题,我能找到的大部分内容都过时了 我已经在settings.py文件中设置了LOG\u FILE=“LOG.txt”,从文档中可以看出,这应该可以: Scrapy在每个Spider实例中提供了一个记录器,可以这样访问和使用: 但当我这样做的时候: class MySpider(CrawlSpider): #other code def parse_page(self,response): self.logger.info("fooba

我在登录scrapy时遇到了问题,我能找到的大部分内容都过时了

我已经在
settings.py
文件中设置了
LOG\u FILE=“LOG.txt”
,从文档中可以看出,这应该可以:

Scrapy在每个Spider实例中提供了一个记录器,可以这样访问和使用:

但当我这样做的时候:

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        self.logger.info("foobar")
我什么也得不到。如果我设定

logger = logging.basicConfig(filename="log.txt",level=logging.INFO)
在我的文件的顶部,在导入之后,它创建了一个日志文件,默认的输出记录得很好,但是

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        logger.info("foobar")
没有露面。我还尝试将其放入类
\uuuuu init\uuuu
,如下所示:

def __init__(self, *a, **kw):
    super(FanfictionSpider, self).__init__(*a, **kw)
    logging.basicConfig(filename="log.txt",level=logging.INFO)

我再次没有得到文件的输出,只是得到控制台的输出,
foobar
没有显示。有人能告诉我如何正确登录Scrapy吗?

似乎您在任何时候都没有调用
parse\u page
方法。 尝试注释您的
parse
方法,您将收到一个
NotImplementedError
,因为您正在启动它,并且您说它“什么都不做”

也许如果你实现你的
parse\u页面
方法,它会起作用

def parse(self, response):
    self.logger.info('Parse function called on %s', response.url)
    self.parse_page(response)

希望它对您有所帮助。

对于日志记录,我只在spider类中添加了以下内容:

import logging
from scrapy.utils.log import configure_logging 


class SomeSpider(scrapy.Spider):
    configure_logging(install_root_handler=False)
    logging.basicConfig(
        filename='log.txt',
        format='%(levelname)s: %(message)s',
        level=logging.INFO
    )
这将把所有碎片输出作为
log.txt
文件放到项目根目录中

如果要手动记录某些内容,则不应使用scrapy logger,它已被弃用。只需使用python

import logging
logging.error("Some error")

在我将以下内容添加到spider.py代码的导入部分之前,我无法使@Rafael Almeda的解决方案起作用:

from scrapy.utils.log import configure_logging 

您是否检查过您应该在
settings.py
文件中设置日志文件名和其他详细信息。@Granitosaurus是的,我在问题的开头就说过了,并在整个过程中引用了文档
from scrapy.utils.log import configure_logging