Установите scrapy встроенные регистраторы на другом уровне, чем регистратор кода пользователя - PullRequest
0 голосов
/ 25 апреля 2018

Встроенные логгеры Scrapy:

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

очень многословны.

Я пытался установить другой уровень журнала DEBUG, чем уровень журнала пользователя-паука, 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)

Я вызываю его из initSpider 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)

ThisПодход работает некоторое время, другие нет.

Какое будет правильное решение?

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Настройка различных уровней журнала для обработчиков журнала не очень реалистична.

В конце дня лучшим подходом будет запуск инструмента scrapy cli из другого сценария и необходим вывод фильтров журнала с помощью синтаксического анализатора.

0 голосов
/ 17 ноября 2018

Я наткнулся на ту же проблему.Я пробовал различные методы, но похоже, что поскольку в Scrapy используется модуль регистрации, вы должны установить его на глобальном уровне, в результате чего Scrapy будет печатать всю отладочную информацию.

Я нашел более надежное решение использовать флаг bool с оператором печати для DEBUG и использовать регистратор для INFO, ERROR и WARNING.

0 голосов
/ 25 апреля 2018

Вы можете просто установить LOG_LEVEL соответствующим образом в вашем settings.py, подробнее здесь: https://doc.scrapy.org/en/latest/topics/settings.html#std:setting-LOG_LEVEL

LOG_LEVEL
По умолчанию: 'DEBUG'
Минимальный уровень для входа.Доступные уровни: CRITICAL, ERROR, WARNING, INFO, 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-spider

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...