Pregunta

Busco su ayuda en las siguientes 2 preguntas: ¿cómo configuro el controlador para los diferentes niveles de registro como en Python? Actualmente tengo

STATS_ENABLED = True
STATS_DUMP = True 

LOG_FILE = 'crawl.log'

Pero los mensajes de depuración generados por Scrapy también se agregan a los archivos de registro. Esos son muy largos e idealmente, me gustaría que los mensajes de nivel de depuración se dejaran en error estándar y mensajes de información para ser descargados de mi LOG_FILE.

En segundo lugar, en los documentos, dice The logging service must be explicitly started through the scrapy.log.start() function. Mi pregunta es, ¿dónde ejecuto esto? scrapy.log.start()? ¿Está dentro de mi araña?

¿Fue útil?

Solución 3

Mmm,

Solo quería actualizar que pueda hacer que el controlador de archivos de registro se presente usando

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

Sin embargo, no puedo hacer que el registro muestre el nombre de las arañas como de Twisted in Standard Error. Publiqué esto pregunta.

Otros consejos

En segundo lugar, en los documentos, dice The logging service must be explicitly started through the scrapy.log.start() function. Mi pregunta es, ¿dónde ejecuto este scrape.log.start ()? ¿Está dentro de mi araña?

Si ejecuta una araña usando scrapy crawl my_spider - El registro se inicia automáticamente si STATS_ENABLED = True

Si comienza el proceso de rastreador manualmente, puede hacer scrapy.log.start() Antes de comenzar el proceso de rastreador.

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."

El pequeño conocimiento que tengo sobre su primera pregunta:

Debido a que debe iniciar el registro de Scrapy manualmente, esto le permite usar su propio registrador.

Creo que puedes copiar módulo scrapy/scrapy/log.py en fuentes de scrape, modifíquelo, importárelo en lugar de scrapy.log y correr start() - Scrapy usará su registro. En él hay una línea en función start() que dice log.startLoggingWithObserver(sflo.emit, setStdout=logstdout).

Haz tu propio observador (http://docs.python.org/howto/logging-cookbook.html#logging-to-multiple-destinations) y úsalo allí.

Me gustaría que los mensajes de nivel de depuración se dejaran en el error estándar y los mensajes de información para ser descargados en mi Log_File.

Puedes configurar LOG_LEVEL = 'INFO' En Settings.py, pero deshabilitará por completo los mensajes de depuración.

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

Las salidas se redirigirán a un archivo LogName.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top