Scrapy - Registro

Descrição

Loggingsignifica rastreamento de eventos, que usa o sistema de registro integrado e define funções e classes para implementar aplicativos e bibliotecas. O registro é um material pronto para uso, que pode funcionar com as configurações de Scrapy listadas nas configurações de registro.

O Scrapy definirá algumas configurações padrão e tratará dessas configurações com a ajuda de scrapy.utils.log.configure_logging () ao executar comandos.

Níveis de registro

Em Python, existem cinco níveis diferentes de gravidade em uma mensagem de log. A lista a seguir mostra as mensagens de log padrão em ordem crescente -

  • logging.DEBUG - para mensagens de depuração (gravidade mais baixa)

  • logging.INFO - para mensagens informativas

  • logging.WARNING - para mensagens de aviso

  • logging.ERROR - para erros regulares

  • logging.CRITICAL - para erros críticos (severidade mais alta)

Como registrar mensagens

O código a seguir mostra o registro de uma mensagem usando logging.info nível.

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

A mensagem de registro acima pode ser passada como um argumento usando logging.log mostrado a seguir -

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

Agora, você também pode usar loggers para incluir a mensagem usando os auxiliares de log de log para obter a mensagem de log claramente mostrada como segue -

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

Pode haver vários registradores e eles podem ser acessados ​​obtendo seus nomes com o uso de logging.getLogger função mostrada a seguir.

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

Um logger personalizado pode ser usado para qualquer módulo usando a variável __name__ que contém o caminho do módulo mostrado a seguir -

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

Registro de spiders

Cada instância do spider tem um logger dentro dele e pode ser usado da seguinte maneira -

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)

No código acima, o logger é criado usando o nome do Spider, mas você pode usar qualquer logger personalizado fornecido pelo Python, conforme mostrado no código a seguir -

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)

Configuração de registro

Os registradores não são capazes de exibir mensagens enviadas por eles próprios. Portanto, eles exigem "manipuladores" para exibir essas mensagens e os manipuladores redirecionarão essas mensagens para seus respectivos destinos, como arquivos, emails e saída padrão.

Dependendo das configurações a seguir, o Scrapy configurará o manipulador do registrador.

Configurações de registro

As seguintes configurações são usadas para configurar o registro -

  • o LOG_FILE e LOG_ENABLED decida o destino das mensagens de log.

  • Quando você define o LOG_ENCODING como falso, ele não exibirá as mensagens de saída do log.

  • o LOG_LEVELirá determinar a ordem de gravidade da mensagem; essas mensagens com menos gravidade serão filtradas.

  • o LOG_FORMAT e LOG_DATEFORMAT são usados ​​para especificar os layouts de todas as mensagens.

  • Quando você define o LOG_STDOUT como verdadeiro, todas as saídas padrão e mensagens de erro do seu processo serão redirecionadas para o log.

Opções de linha de comando

As configurações de scrapy podem ser substituídas passando os argumentos da linha de comando, conforme mostrado na tabela a seguir -

Sr. Não Comando e Descrição
1

--logfile FILE

Substitui LOG_FILE

2

--loglevel/-L LEVEL

Substitui LOG_LEVEL

3

--nolog

Define LOG_ENABLED como False

módulo scrapy.utils.log

Esta função pode ser usada para inicializar os padrões de registro para Scrapy.

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

Sr. Não Parâmetro e Descrição
1

settings (dict, None)

Ele cria e configura o manipulador para logger root. Por padrão, é Nenhum .

2

install_root_handler (bool)

Ele especifica a instalação do manipulador de registro raiz. Por padrão, é True .

A função acima -

  • Encaminha avisos e registros distorcidos por meio do registro padrão do Python.
  • Atribui DEBUG a Scrapy e o nível de ERROR a registradores Twisted.
  • Encaminha o stdout para o log, se a configuração LOG_STDOUT for verdadeira.

As opções padrão podem ser substituídas usando o settingsargumento. Quando as configurações não são especificadas, os padrões são usados. O manipulador pode ser criado para o logger root, quando install_root_handler é definido como verdadeiro. Se for definido como falso, não haverá nenhuma saída de log definida. Ao usar comandos Scrapy, o configure_logging será chamado automaticamente e pode ser executado explicitamente, enquanto executa os scripts personalizados.

Para configurar a saída de registro manualmente, você pode usar logging.basicConfig() mostrado a seguir -

import logging 
from scrapy.utils.log import configure_logging  

configure_logging(install_root_handler = False) 
logging.basicConfig ( 
   filename = 'logging.txt', 
   format = '%(levelname)s: %(your_message)s', 
   level = logging.INFO 
)