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
)