登录 Scrapy [英] Logging in Scrapy

查看:33
本文介绍了登录 Scrapy的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am having trouble with logging in scrapy, and most of what I can find is out of date.

我已经在 settings.py 文件和文档中设置了 LOG_FILE="log.txt",这应该可以工作:

I have set LOG_FILE="log.txt" in the settings.py file and from the documentation, this should work:

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

Scrapy provides a logger within each Spider instance, that can be accessed and used like this:

import scrapy

class MySpider(scrapy.Spider):

    name = 'myspider'
    start_urls = ['http://scrapinghub.com']

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

但是当我这样做时:

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        self.logger.info("foobar")

我一无所获.如果我设置

I get nothing. If I set

logger = logging.basicConfig(filename="log.txt",level=logging.INFO)

在我的文件顶部,在我导入之后,它会创建一个日志文件,并且默认输出被记录得很好,但是

At the top of my file, after my imports, it creates a log file, and the default output gets logged just fine, but

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        logger.info("foobar")

未能露面.我也试过把它放在 __init__ 类中,例如:

Fails to make an appearance. I have also tried putting it in the class __init__, as such:

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

我再次没有输出到文件,只有控制台,并且 foobar 没有显示.有人可以指导我如何正确登录 Scrapy 吗?

I once again get no output to the file, just to the console, and foobar does not show up. Can someone please direct me on how to correctly log in Scrapy?

推荐答案

对于日志记录,我只是把它放在蜘蛛类上:

For logging I just put this on the spider class:

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
    )

这会将所有scrapy输出作为log.txt文件放入项目根目录

This will put all scrapy output into the project root directory as a log.txt file

如果你想手动记录一些东西,你不应该使用scrapy logger,它已被弃用.只用python一个

If you want to log something manually you shouldn't use the scrapy logger, it's deprecated. Just use the python one

import logging
logging.error("Some error")

这篇关于登录 Scrapy的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆