2015-10-18 14 views
6

Ho creato uno spider utilizzando Scrapy ma non riesco a capire come disattivare la registrazione predefinita. Da the documentation sembra che dovrei essere in grado di spegnerlo facendoCome disattivare la registrazione in Scrapy (Python)

 logging.basicConfig(level=logging.ERROR) 

Ma questo non ha alcun effetto. Dall'osservazione del codice per logging.basicConfig() suppongo che questo sia dovuto al fatto che "il logger di root ha configurato i gestori" ma forse ho sbagliato a riguardo. In ogni caso, qualcuno può spiegare che cosa devo fare per ottenere Scrapy di non emettere il consueto

 2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 

ecc?

EDIT: Come suggerito da sirfz al di sotto, la linea

 logging.getLogger('scrapy').setLevel(logging.WARNING) 

può essere utilizzato per impostare il livello di registrazione. Tuttavia, sembra che devi farlo nel metodo init (o successivo) nel tuo spider.

risposta

7

Si può semplicemente cambiare il livello di registrazione per Scrapy (o qualsiasi altro logger):

logging.getLogger('scrapy').setLevel(logging.WARNING) 

Questo disabilita tutti i messaggi di log inferiore al livello WARNING.

Per disabilitare tutti i messaggi di log Scrapy si può solo impostare propagate-False:

logging.getLogger('scrapy').propagate = False 

Questo impedisce i messaggi di log di Scrapy di propagarsi al logger principale (che stampa per consolare se configurato utilizzando basicConfig())

+2

Grazie per il vostro aiuto! Ho capito che l'impostazione del livello funziona solo se l'ho inserita nel __init__ del mio spider. Sto eseguendo il mio spider da uno script: se imposto il livello di registrazione prima di iniziare la scansione, apparentemente viene reimpostato su INFO. Non sto chiamando esplicitamente "configure_logging" ma immagino che Scrapy lo stia facendo da qualche parte durante l'avvio. (?) –

+0

Non ho mai usato il scrapy da solo, ma immagino che il crawler stia applicando una configurazione predefinita per 'logging', il che è strano dato che dovrebbe essere lasciato all'utente. – sirfz

2

È possibile aggiungere come parametro quando si avvia lo script. Questo dovrebbe fare il trucco.

Nota: Per la versione 1.1 ha cambiato un po ': -s LOG_ENABLED=0

0

logging.basicConfig (** kwargs)

Questa funzione non fa nulla se il logger di root ha già gestori configurato per questo.

Scrapy ha gestori configurati per essa, quindi questo non funzionerà