将附加的内置记录仪设置为不同的级别与用户代码记录仪



scrapy内置伐木者:

  • scrapy.utils.log
  • scrapy.crawler
  • scrapy.middleware
  • scrapy.core.engine
  • scrapy.extensions.logstats
  • scrapy.extensions.telnet
  • scrapy.core.scraper
  • scrapy.statscollector

非常详细。

我试图设置与用户蜘蛛日志级别和信息不同的日志级别,调试。这样,我可以减少"噪音"。

此辅助功能有效,有时是:

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致电:

class UserSpider(scrapy.Spider):
      def __init__(self, *args, **kwargs):
          # customize loggers: Some loggers can't be reset a this point
          helpers.set_loggers_level()
          super(UserSpider, self).__init__(*args, **kwargs)

这种方法有效,其他时间则没有。

正确的解决方案是什么?

您只需在settings.py中适当设置LOG_LEVEL,请在此处阅读更多:https://doc.scrapy.org/en/latest/topics/settings/settings/settings.html#std:setting tingting:setting tingting-log_level

log_level
默认值:'debug'
最低日志。可用级别是:关键,错误,警告,信息,调试。有关更多信息,请参见记录。

如果项目广泛的设置不够焦点,则可以使用custom_settings

将它们设置
class MySpider(scrapy.Spider):
    name = 'myspider'
    custom_settings = {
        'LOG_LEVEL': 'INFO',
    }

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

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

在一天结束时,更好的方法将是从另一个脚本中启动scrapy cli工具,并需要使用解析器的过滤器日志输出。

我偶然发现了同一问题。我尝试了各种方法,但看起来像是由于scrapy使用日志记录模块,因此您必须将其设置为全球层面,从而导致砂纸打印所有调试信息。

我找到了更可靠的解决方案,可以将布尔标志与打印语句通过调试,并使用logger以获取信息,错误和警告。

最新更新