在不同于用户代码日志的级别设置垃圾内置记录器

2021-02-25 03:53:28 发布

您现在位置:Python中文网/ 问答频道 /正文

破旧的内置伐木机:

  • 在scrapy.utils.log在
  • 在爬虫在
  • 在废料中间件在
  • 在废芯发动机在
  • 在scrapy.extensions.logstats在
  • 在scrapy.extensions.telnet在
  • 在刮刀在
  • 在碎屑状StatsCollector在

非常冗长。在

我试图设置一个不同的日志级别DEBUG,而不是用户spider日志级别INFO。这样我就能减少噪音。在

此助手函数有时起作用:

def set_loggers_level(level=logging.DEBUG):    
  loggers = [
     'scrapy.utils.log',
     'scrapy.crawler',
     'scrapy.middleware',
     'scrapy.core.engine',
     'scrapy.extensions.logstats',
     'scrapy.extensions.telnet',
     'scrapy.core.scraper',
     'scrapy.statscollectors'
 ]
 for logger_name in loggers:
    logger = logging.getLogger(logger_name)
    logger.setLevel(level)
    for handler in logger.handlers:
        handler.setLevel(level)

我从UserSpider init调用它:

^{pr2}$

这种方法有时有效,有时不行。在

正确的解决方案是什么?在

3条回答
网友
1楼 ·

您只需在您的settings.py中适当地设置LOG_LEVEL,请阅读以下内容:https://doc.scrapy.org/en/latest/topics/settings.html#std:setting-LOG_LEVEL

LOG_LEVEL
Default: 'DEBUG'
Minimum level to log. Available levels are: CRITICAL, ERROR, WARNING, INFO, DEBUG. For more info see Logging.

如果项目范围的设置不够集中,可以使用custom_settings为每个spider设置它们:

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'LOG_LEVEL': 'INFO',
    }

资料来源: https://doc.scrapy.org/en/latest/topics/settings.html#settings-per-spider

网友
2楼 ·

为每个日志处理程序设置不同的日志级别不是很现实。在

最终,更好的方法是从另一个脚本启动scrapy cli工具,并使用解析器输出过滤器日志。在

网友
3楼 ·

我偶然发现了同样的问题。我尝试了各种方法,但看起来由于scray使用日志模块,所以必须在全局级别设置它,这导致scray打印所有调试信息。在

我找到了更可靠的解决方案,使用bool标志和print语句进行调试,并使用logger获取信息、错误和警告。在

相关问题