Scrapy - Registrazione

Descrizione

Loggingsignifica monitoraggio degli eventi, che utilizza il sistema di registrazione integrato e definisce funzioni e classi per implementare applicazioni e librerie. La registrazione è un materiale pronto per l'uso, che può funzionare con le impostazioni di Scrapy elencate in Impostazioni di registrazione.

Scrapy imposterà alcune impostazioni predefinite e gestirà queste impostazioni con l'aiuto di scrapy.utils.log.configure_logging () durante l'esecuzione dei comandi.

Livelli di registro

In Python, ci sono cinque diversi livelli di gravità in un messaggio di log. Il seguente elenco mostra i messaggi di registro standard in ordine crescente:

  • logging.DEBUG - per il debug dei messaggi (gravità minima)

  • logging.INFO - per messaggi informativi

  • logging.WARNING - per i messaggi di avviso

  • logging.ERROR - per errori regolari

  • logging.CRITICAL - per errori critici (massima gravità)

Come registrare i messaggi

Il codice seguente mostra la registrazione di un messaggio utilizzando logging.info livello.

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

Il messaggio di registrazione sopra può essere passato come argomento usando logging.log mostrato come segue -

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

Ora puoi anche utilizzare i logger per racchiudere il messaggio usando gli helper di logging logging per ottenere il messaggio di logging chiaramente mostrato come segue:

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

Possono esserci più logger ed è possibile accedervi ottenendo i loro nomi utilizzando logging.getLogger funzione mostrata come segue.

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

Un logger personalizzato può essere utilizzato per qualsiasi modulo utilizzando la variabile __name__ che contiene il percorso del modulo mostrato come segue -

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

Registrazione da Spider

Ogni istanza di spider ha un file logger al suo interno e può essere utilizzato come segue:

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)

Nel codice sopra, il logger viene creato usando il nome del ragno, ma puoi usare qualsiasi logger personalizzato fornito da Python come mostrato nel codice seguente:

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)

Configurazione registrazione

I logger non sono in grado di visualizzare i messaggi inviati da loro da soli. Quindi richiedono "gestori" per visualizzare quei messaggi e i gestori reindirizzeranno questi messaggi alle rispettive destinazioni come file, email e output standard.

A seconda delle seguenti impostazioni, Scrapy configurerà il gestore per il logger.

Impostazioni di registrazione

Le seguenti impostazioni vengono utilizzate per configurare la registrazione:

  • Il LOG_FILE e LOG_ENABLED decidere la destinazione per i messaggi di registro.

  • Quando imposti il ​​file LOG_ENCODING a false, non visualizzerà i messaggi di output del registro.

  • Il LOG_LEVELdeterminerà l'ordine di gravità del messaggio; quei messaggi con minore gravità verranno filtrati.

  • Il LOG_FORMAT e LOG_DATEFORMAT vengono utilizzati per specificare i layout di tutti i messaggi.

  • Quando imposti il ​​file LOG_STDOUT a true, tutti gli output standard e i messaggi di errore del processo verranno reindirizzati al registro.

Opzioni della riga di comando

Le impostazioni di Scrapy possono essere sovrascritte passando gli argomenti della riga di comando come mostrato nella tabella seguente:

Suor n Comando e descrizione
1

--logfile FILE

Sostituisce LOG_FILE

2

--loglevel/-L LEVEL

Sostituisce LOG_LEVEL

3

--nolog

Imposta LOG_ENABLED su False

modulo scrapy.utils.log

Questa funzione può essere utilizzata per inizializzare le impostazioni di registrazione predefinite per Scrapy.

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

Suor n Parametro e descrizione
1

settings (dict, None)

Crea e configura il gestore per root logger. Per impostazione predefinita, è Nessuno .

2

install_root_handler (bool)

Specifica di installare il gestore di registrazione root. Per impostazione predefinita, è True .

La funzione di cui sopra -

  • Instrada gli avvisi e le registrazioni distorte tramite la registrazione standard di Python.
  • Assegna DEBUG a Scrapy e il livello ERROR ai logger Twisted.
  • Instrada lo stdout al log, se l'impostazione LOG_STDOUT è vera.

Le opzioni predefinite possono essere sovrascritte utilizzando il settingsdiscussione. Quando le impostazioni non sono specificate, vengono utilizzati i valori predefiniti. Il gestore può essere creato per il logger root, quando install_root_handler è impostato su true. Se è impostato su false, non sarà impostato alcun output di log. Quando si utilizzano i comandi Scrapy, il configure_logging verrà chiamato automaticamente e può essere eseguito in modo esplicito, durante l'esecuzione degli script personalizzati.

Per configurare manualmente l'output della registrazione, è possibile utilizzare logging.basicConfig() mostrato come segue -

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 
)