2015-10-18 10 views
6

Ich habe eine Spinne mit Scrapy erstellt, aber ich kann nicht herausfinden, wie die Standardprotokollierung deaktiviert wird. Von the documentation scheint es, dass ichSo deaktivieren Sie die Protokollierung in Scrapy (Python)

 logging.basicConfig(level=logging.ERROR) 

indem der Lage sein, um es auszuschalten sollte Aber das hat keine Wirkung. Aus dem Blick auf den Code für logging.basicConfig() Ich vermute, das ist, weil "der Root-Logger Handler konfiguriert hat", aber vielleicht irre ich mich damit. Jedenfalls kann jemand erklären, was ich tun müssen, um Scrapy zu bekommen nicht ausgegeben die übliche

 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 

usw.?

EDIT: Wie unten durch sirfz vorgeschlagen, die Linie

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

verwendet werden, können die Protokollstufe einzustellen. Es scheint jedoch, dass Sie dies in der Init-Methode (oder später) in Ihrer Spinne tun müssen.

Antwort

7

Sie können einfach die Protokollierungsebene für scrapy ändern (oder einen anderen Logger):

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

Diese alle Log-Meldungen deaktiviert weniger als die WARNING Ebene.

Um alle scrapy Log-Meldungen deaktivieren Sie nur propagate-False einstellen:

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

Dies verhindert, dass Protokollmeldungen des scrapy zum Stamm Logger ausbreitet (die, wenn basicConfig() konfiguriert ist, um die Konsole druckt mit)

+2

Dank für Ihre Hilfe danken! Ich habe herausgefunden, dass das Setzen des Levels nur funktioniert, wenn ich es in den __init__ meiner Spinne lege. Ich führe meine Spinne von einem Skript aus - wenn ich die Protokollierungsstufe vor dem Crawl einstelle, wird sie (anscheinend) auf INFO zurückgesetzt. Ich rufe nicht explizit "configure_logging" auf, aber ich denke, dass Scrapy das während des Starts macht. (?) –

+0

Ich habe selbst nie Scrapy benutzt, aber ich denke, der Crawler wendet eine Standardkonfiguration für 'Logging' an, was seltsam ist, da dies dem Benutzer überlassen werden sollte. – sirfz

2

Sie könnten als Parameter hinzufügen, wenn Sie Ihr Skript starten. Das sollte den Trick machen.

Hinweis: Für die Version 1.1 ein wenig geändert: -s LOG_ENABLED=0

0

logging.basicConfig (** kwargs)

Diese Funktion führt nichts durch, wenn der Stammlogger bereits über Handlerverfügtdafür konfiguriert.

Scrapy hat Handler dafür konfiguriert, so dass dies nicht funktioniert

Verwandte Themen