Scrapy日志级别更改

14
我正在尝试从我的脚本启动 scrapy 爬虫,如此处所示:here
logging.basicConfig(
    filename='log.txt',
    format='%(levelname)s: %(message)s',
    level=logging.CRITICAL
)
configure_logging(install_root_handler=False)
process = CrawlerProcess(get_project_settings())

process.crawl('1740')
process.start() # the script will block here until the crawling is finished

我想配置我的爬虫的日志级别,但即使我不安装根记录器处理程序并使用logging.basicConfig方法配置基本配置,它也不遵守确定的级别。

INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
INFO: Enabled item pipelines:
['collector.pipelines.CollectorPipeline']
INFO: Spider opened
INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)

它遵循basicConfig中确定的格式和文件名,但不使用日志级别。除了这个地方,我不确定日志级别。

注意:我没有导入或更改日志级别的其他地方。

1个回答

24

对于Scrapy本身,您应在settings.py中定义日志记录设置,如文档所述

因此,在settings.py中,您可以设置:

LOG_LEVEL = 'ERROR'  # to only display errors
LOG_FORMAT = '%(levelname)s: %(message)s'
LOG_FILE = 'log.txt'

是的,它确实这样做。首先,即使我更改了该设置,它仅适用于标准输出日志。例如,如果我将LOG_ENABLED更改为False,则不会生成stdout日志,但它将继续为在main(上面)中确定的文件生成日志。这种方法的第二个问题是它是全局设置。我想要单独更改记录器的设置。 - guemues
如果添加了 LOG_LEVEL = 'DEBUG',其他设置是否强制执行?我已将我的设置为 DEBUG,但我没有得到任何额外的信息! - J86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接