Frage

Ich suche Ihre Hilfe in den folgenden 2 Fragen - wie stelle ich den Handler für die verschiedenen Protokollebenen wie in Python fest? Derzeit habe ich

STATS_ENABLED = True
STATS_DUMP = True 

LOG_FILE = 'crawl.log'

Die von Scrapy generierten Debug -Nachrichten werden jedoch ebenfalls in die Protokolldateien hinzugefügt. Diese sind sehr lang und im Idealfall, ich möchte, dass die Debug -Level -Nachrichten auf Standardfehler und Info -Nachrichten auf meine abgelassen werden LOG_FILE.

Zweitens heißt es in den Dokumenten The logging service must be explicitly started through the scrapy.log.start() function. Meine Frage ist, wo leite ich das scrapy.log.start()? Ist es in meiner Spinne?

War es hilfreich?

Lösung 3

Hmm,

Ich wollte nur aktualisieren, dass ich den Protokollierungsdateihandler mithilfe verwenden kann

from twisted.python import log
import logging
logging.basicConfig(level=logging.INFO, filemode='w', filename='log.txt'""")
observer = log.PythonLoggingObserver()
observer.start()

Ich kann das Protokoll jedoch nicht dazu bringen, den Namen der Spinnen wie aus Twisted in Standardfehler anzuzeigen. Ich habe das gepostet Frage.

Andere Tipps

Zweitens heißt es in den Dokumenten The logging service must be explicitly started through the scrapy.log.start() function. Meine Frage ist, wo führe ich diese Scrapy.log.start () aus? Ist es in meiner Spinne?

Wenn Sie eine Spinne verwenden, verwenden Sie scrapy crawl my_spider - Das Protokoll wird automatisch gestartet, wenn STATS_ENABLED = True

Wenn Sie den Crawler -Prozess manuell starten, können Sie dies tun scrapy.log.start() Vor Beginn des Crawler -Prozesses.

from scrapy.crawler import CrawlerProcess
from scrapy.conf import settings


settings.overrides.update({}) # your settings

crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()

crawlerProcess.crawl(spider) # your spider here

log.start() # depends on LOG_ENABLED

print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."

Das kleine Wissen, das ich über Ihre erste Frage habe:

Da Sie das Scrapy -Protokoll manuell starten müssen, können Sie Ihren eigenen Logger verwenden.

Ich denke, Sie können das Modul kopieren scrapy/scrapy/log.py in Scrapy -Quellen modifizieren Sie es, importieren Sie es anstelle von scrapy.log und Renn start() - Scrapy verwendet Ihr Protokoll. Darin gibt es eine Linie in der Funktion start() was sagt log.startLoggingWithObserver(sflo.emit, setStdout=logstdout).

Machen Sie Ihren eigenen Beobachter (http://docs.python.org/howto/logging-cookbook.html#logging-to-multiple-destinations) und benutze es dort.

Ich möchte, dass die Debug -Level -Nachrichten zu Standardfehler und Info -Nachrichten zu meinem log_file gelassen werden.

Sie können festlegen LOG_LEVEL = 'INFO' In Settings.py, aber es wird Debug -Nachrichten vollständig deaktivieren.

scrapy some-scrapy's-args -L 'INFO' -s LOG_FILE=log1.log

Ausgänge werden in eine Protokollname -Datei umgeleitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top