Учебники

Scrapy — Logging

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

Scrapy будет устанавливать некоторые настройки по умолчанию и обрабатывать эти настройки с помощью scrapy.utils.log.configure_logging () при запуске команд.

Уровни журнала

В Python существует пять разных уровней серьезности сообщения журнала. В следующем списке показаны стандартные сообщения журнала в порядке возрастания.

  • logging.DEBUG — для отладки сообщений (самая низкая серьезность)

  • logging.INFO — для информационных сообщений

  • logging.WARNING — для предупреждающих сообщений

  • logging.ERROR — для регулярных ошибок

  • logging.CRITICAL — для критических ошибок (наибольшая серьезность)

logging.DEBUG — для отладки сообщений (самая низкая серьезность)

logging.INFO — для информационных сообщений

logging.WARNING — для предупреждающих сообщений

logging.ERROR — для регулярных ошибок

logging.CRITICAL — для критических ошибок (наибольшая серьезность)

Как регистрировать сообщения

Следующий код показывает запись сообщения с использованием уровня logging.info .

import logging 
logging.info("This is an information")

Приведенное выше сообщение регистрации может быть передано в качестве аргумента, используя logging.log, показанный ниже:

import logging 
logging.log(logging.INFO, "This is an information")

Теперь вы также можете использовать средства ведения журнала, чтобы заключить сообщение, используя средства ведения журнала ведения журнала, чтобы получить сообщение журнала, которое четко показано следующим образом:

import logging
logger = logging.getLogger()
logger.info("This is an information")

Может быть несколько регистраторов, и к ним можно получить доступ, получив их имена с помощью функции logging.getLogger, показанной ниже.

import logging
logger = logging.getLogger('mycustomlogger')
logger.info("This is an information")

Настроенный регистратор можно использовать для любого модуля, используя переменную __name__, которая содержит путь к модулю, показанный ниже:

import logging
logger = logging.getLogger(__name__)
logger.info("This is an information")

Вход от Пауков

Каждый экземпляр паука имеет регистратор внутри и может использоваться следующим образом —

import scrapy 

class LogSpider(scrapy.Spider):  
   name = 'logspider' 
   start_urls = ['http://dmoz.com']  
   def parse(self, response): 
      self.logger.info('Parse function called on %s', response.url)

В приведенном выше коде регистратор создается с использованием имени Паука, но вы можете использовать любой настраиваемый регистратор, предоставляемый Python, как показано в следующем коде:

import logging
import scrapy

logger = logging.getLogger('customizedlogger')
class LogSpider(scrapy.Spider):
   name = 'logspider'
   start_urls = ['http://dmoz.com']

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

Конфигурация журнала

Регистраторы не могут отображать сообщения, отправленные ими самостоятельно. Поэтому им требуются «обработчики» для отображения этих сообщений, а обработчики будут перенаправлять эти сообщения в их соответствующие пункты назначения, такие как файлы, электронные письма и стандартный вывод.

В зависимости от следующих настроек, Scrapy настроит обработчик для регистратора.

Настройки ведения журнала

Для настройки ведения журнала используются следующие параметры:

  • LOG_FILE и LOG_ENABLED определяют место назначения для сообщений журнала.

  • Когда вы установите для LOG_ENCODING значение false, он не будет отображать сообщения вывода журнала.

  • LOG_LEVEL определит порядок серьезности сообщения; те сообщения с меньшей серьезностью будут отфильтрованы.

  • LOG_FORMAT и LOG_DATEFORMAT используются для указания макетов для всех сообщений.

  • Когда вы установите для LOG_STDOUT значение true, все стандартные выходные данные и сообщения об ошибках вашего процесса будут перенаправлены в журнал.

LOG_FILE и LOG_ENABLED определяют место назначения для сообщений журнала.

Когда вы установите для LOG_ENCODING значение false, он не будет отображать сообщения вывода журнала.

LOG_LEVEL определит порядок серьезности сообщения; те сообщения с меньшей серьезностью будут отфильтрованы.

LOG_FORMAT и LOG_DATEFORMAT используются для указания макетов для всех сообщений.

Когда вы установите для LOG_STDOUT значение true, все стандартные выходные данные и сообщения об ошибках вашего процесса будут перенаправлены в журнал.

Параметры командной строки

Настройки Scrapy могут быть переопределены путем передачи аргументов командной строки, как показано в следующей таблице:

Sr.No Команда и описание
1

—logfile FILE

Переопределяет LOG_FILE

2

—loglevel / -L LEVEL

Переопределяет LOG_LEVEL

3

—nolog

Устанавливает LOG_ENABLED в False

—logfile FILE

Переопределяет LOG_FILE

—loglevel / -L LEVEL

Переопределяет LOG_LEVEL

—nolog

Устанавливает LOG_ENABLED в False

модуль scrapy.utils.log

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

scrapy.utils.log.configure_logging(settings = None, install_root_handler = True)

Sr.No Параметр и описание
1

настройки (dict, None)

Он создает и настраивает обработчик для корневого регистратора. По умолчанию это None .

2

install_root_handler (bool)

Он указывает на установку обработчика корневых журналов. По умолчанию это True .

настройки (dict, None)

Он создает и настраивает обработчик для корневого регистратора. По умолчанию это None .

install_root_handler (bool)

Он указывает на установку обработчика корневых журналов. По умолчанию это True .

Вышеуказанная функция —

  • Маршрутизация предупреждений и искаженных журналов через стандартную регистрацию Python.
  • Назначает DEBUG для уровня Scrapy и уровень ERROR для витых регистраторов.
  • Направляет стандартный вывод в журнал, если для параметра LOG_STDOUT установлено значение true.

Параметры по умолчанию могут быть переопределены с помощью аргумента настройки . Если настройки не указаны, используются значения по умолчанию. Обработчик может быть создан для корневого регистратора, когда для install_root_handler задано значение true. Если задано значение false, то не будет никакого выхода журнала. При использовании команд Scrapy файл configure_logging будет вызываться автоматически, и он может запускаться явно при выполнении пользовательских сценариев.

Чтобы настроить вывод журнала вручную, вы можете использовать logging.basicConfig (), показанный ниже: