Ho deciso di utilizzare il modulo di registrazione Python perché i messaggi generati da Twisted su std error sono troppo lunghi e voglio i messaggi significativi di livello INFO
come quelli generati con lo StatsCollector
da scrivere su un file di registro separato mantenendo i messaggi sullo schermo.Scrapy - registrazione su file e stdout simultaneamente, con nomi spider
from twisted.python import log
import logging
logging.basicConfig(level=logging.INFO, filemode='w', filename='buyerlog.txt')
observer = log.PythonLoggingObserver()
observer.start()
Beh, questo va bene, ho i miei messaggi, ma il lato negativo è che io non conosco i messaggi sono generati da cui ragno! Questo è il mio file di log, con "contorto" essere visualizzato da %(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,
Rispetto ai messaggi generati dal contorto su standard error:
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) <
Ho provato% (name) s ,% (modulo) s tra gli altri ma non riesco a mostrare il nome del ragno. Qualcuno conosce la risposta?
EDIT: il problema con l'utilizzo LOG_FILE
e LOG_LEVEL
nelle impostazioni è che i messaggi di livello inferiore non verranno visualizzati in caso di errore std.
Dove hai messo il tuo codice? setting.py o spider code? –