Scrapy - l'enregistrement du dossier et la sortie standard (stdout) simultanément, avec les noms
J'ai décidé d'utiliser le Python module de journalisation parce que les messages générés par Torsadée sur les mst erreur est trop long, et je veux INFO
niveau significatif des messages tels que ceux générés par les StatsCollector
être écrit sur un fichier journal distinct, tout en maintenant les messages de l'écran.
from twisted.python import log
import logging
logging.basicConfig(level=logging.INFO, filemode='w', filename='buyerlog.txt')
observer = log.PythonLoggingObserver()
observer.start()
Bien, c'est très bien, j'ai mes messages, mais l'inconvénient est que je ne connais pas les messages sont générés par lequel araignée! C'est mon fichier de log, avec "tordu" affichée par %(name)s
:
INFO:twisted:Log opened.
2 INFO:twisted:Scrapy 0.12.0.2543 started (bot: property)
3 INFO:twisted:scrapy.telnet.TelnetConsole starting on 6023
4 INFO:twisted:scrapy.webservice.WebService starting on 6080
5 INFO:twisted:Spider opened
6 INFO:twisted:Spider opened
7 INFO:twisted:Received SIGINT, shutting down gracefully. Send again to force unclean shutdown
8 INFO:twisted:Closing spider (shutdown)
9 INFO:twisted:Closing spider (shutdown)
10 INFO:twisted:Dumping spider stats:
11 {'downloader/exception_count': 3,
12 'downloader/exception_type_count/scrapy.exceptions.IgnoreRequest': 3,
13 'downloader/request_bytes': 9973,
Contre les messages générés à partir de tordu sur la norme de l'erreur:
2011-12-16 17:34:56+0800 [expats] DEBUG: number of rules: 4
2011-12-16 17:34:56+0800 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2011-12-16 17:34:56+0800 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2011-12-16 17:34:56+0800 [iproperty] INFO: Spider opened
2011-12-16 17:34:56+0800 [iproperty] DEBUG: Redirecting (301) to <GET http://www.iproperty.com.sg/> from <GET http://iproperty.com.sg>
2011-12-16 17:34:57+0800 [iproperty] DEBUG: Crawled (200) <
J'ai essayé d' %(name)s, %(module)s parmi d'autres, mais je ne semble pas être en mesure de montrer l'araignée nom. Personne ne connaît la réponse?
EDIT:
le problème avec l'aide de LOG_FILE
et LOG_LEVEL
dans les paramètres, c'est que le niveau inférieur des messages n'apparaissent pas sur les mst erreur.
OriginalL'auteur goh | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser le
ScrapyFileLogObserver
.Je suis content que vous posiez cette question, j'ai eu envie de faire moi-même.
Hmm, je l'ai mis dans mon araignée module et il a bien fonctionné.. permettez-moi de l'expérience. Edit: la façon de le mettre dans le
__init__
fichier de votre araignées module? Qui semble faire le travail.Hmm, en le mettant dans les araignées de travail. Drôle pourquoi il ne fonctionne pas dans settings.py. Aussi, je ne pouvais pas trouver ce ScrapyFileObserver n'importe où dans les docs. Vous pourriez peut-être me diriger vers le lien (autre que github)?
Il ne semble pas être une fonctionnalité documentée. A du prendre un coup d'oeil à la source pour
scrapy.log
pour le trouver.à compter de 2017, ce module a été supprimé et il est maintenant obsolète: "Module
scrapy.log
a été abandonné, Scrapy repose désormais sur le Python de la bibliothèque pour la journalisation. Lire la mise à jour de la journalisation de l'entrée dans la documentation pour en savoir plus."OriginalL'auteur
Il est très facile de rediriger la sortie à l'aide de:
scrapy some-scrapy's-args 2>&1 | tee -a logname
De cette façon, tout ce que scrapy ouputs dans stdout et stderr, sera redirigé vers une logname fichier et aussi, prited à l'écran.
OriginalL'auteur
Pour tous ces gens qui sont venus ici avant de lire le courant la documentation version:
OriginalL'auteur
Je sais que c'est vieux, mais il était vraiment utile de post depuis la classe n'est toujours pas correctement documentées dans le Scrapy docs. Aussi, nous pouvons ignorer l'importation de journalisation et de l'utilisation scrapy journaux directement. Merci À Tous!
OriginalL'auteur
Comme le Scrapy Officiel Doc dit:
De sorte que vous pouvez config de votre enregistreur juste comme un script Python.
Tout d'abord, vous devez importer le module de journalisation:
Vous pouvez ajouter cette ligne à votre araignée:
Il ajoute un gestionnaire de flux pour vous connecter à la console.
Après cela, vous disposez de la configuration de la journalisation chemin d'accès au fichier.
Ajouter un dict nommé
custom_settings
qui se compose de votre spider-paramètres spécifiés:L'ensemble de la classe ressemble à:
OriginalL'auteur
ScrapyFileLogObserver n'est plus supporté. Vous pouvez utiliser le standard de python module de journalisation.
OriginalL'auteur