Scrapy - Registro
Descripción
Loggingsignifica seguimiento de eventos, que utiliza un sistema de registro integrado y define funciones y clases para implementar aplicaciones y bibliotecas. El registro es un material listo para usar, que puede funcionar con la configuración de Scrapy enumerada en la configuración de registro.
Scrapy establecerá algunas configuraciones predeterminadas y manejará esas configuraciones con la ayuda de scrapy.utils.log.configure_logging () al ejecutar comandos.
Niveles de registro
En Python, hay cinco niveles diferentes de gravedad en un mensaje de registro. La siguiente lista muestra los mensajes de registro estándar en orden ascendente:
logging.DEBUG - para depurar mensajes (gravedad más baja)
logging.INFO - para mensajes informativos
logging.WARNING - para mensajes de advertencia
logging.ERROR - para errores regulares
logging.CRITICAL - para errores críticos (mayor gravedad)
Cómo registrar mensajes
El siguiente código muestra el registro de un mensaje usando logging.info nivel.
import logging
logging.info("This is an information")
El mensaje de registro anterior se puede pasar como argumento usando logging.log se muestra de la siguiente manera:
import logging
logging.log(logging.INFO, "This is an information")
Ahora, también puede usar registradores para adjuntar el mensaje usando los ayudantes de registro registrando para obtener el mensaje de registro claramente mostrado de la siguiente manera:
import logging
logger = logging.getLogger()
logger.info("This is an information")
Puede haber varios registradores y se puede acceder a ellos obteniendo sus nombres con el uso de logging.getLogger función mostrada de la siguiente manera.
import logging
logger = logging.getLogger('mycustomlogger')
logger.info("This is an information")
Se puede usar un registrador personalizado para cualquier módulo usando la variable __name__ que contiene la ruta del módulo que se muestra a continuación:
import logging
logger = logging.getLogger(__name__)
logger.info("This is an information")
Registro de arañas
Cada instancia de araña tiene un logger dentro de él y se puede utilizar de la siguiente manera:
import scrapy
class LogSpider(scrapy.Spider):
name = 'logspider'
start_urls = ['http://dmoz.com']
def parse(self, response):
self.logger.info('Parse function called on %s', response.url)
En el código anterior, el registrador se crea con el nombre de Spider, pero puede usar cualquier registrador personalizado proporcionado por Python como se muestra en el siguiente código:
import logging
import scrapy
logger = logging.getLogger('customizedlogger')
class LogSpider(scrapy.Spider):
name = 'logspider'
start_urls = ['http://dmoz.com']
def parse(self, response):
logger.info('Parse function called on %s', response.url)
Configuración de registro
Los registradores no pueden mostrar los mensajes enviados por ellos por sí mismos. Por lo tanto, requieren "controladores" para mostrar esos mensajes y los controladores redirigirán estos mensajes a sus respectivos destinos, como archivos, correos electrónicos y salida estándar.
Dependiendo de las siguientes configuraciones, Scrapy configurará el controlador para el registrador.
Configuración de registro
Los siguientes ajustes se utilizan para configurar el registro:
los LOG_FILE y LOG_ENABLED decidir el destino de los mensajes de registro.
Cuando configura el LOG_ENCODING a falso, no mostrará los mensajes de salida del registro.
los LOG_LEVELdeterminará el orden de gravedad del mensaje; los mensajes con menos gravedad se filtrarán.
los LOG_FORMAT y LOG_DATEFORMAT se utilizan para especificar los diseños de todos los mensajes.
Cuando configura el LOG_STDOUT a verdadero, todos los mensajes de error y de salida estándar de su proceso serán redirigidos al registro.
Opciones de la línea de comandos
La configuración de scrapy se puede anular pasando argumentos de línea de comandos como se muestra en la siguiente tabla:
No Señor | Comando y descripción |
---|---|
1 | --logfile FILE anulaciones LOG_FILE |
2 | --loglevel/-L LEVEL anulaciones LOG_LEVEL |
3 | --nolog Establece LOG_ENABLED en False |
módulo scrapy.utils.log
Esta función se puede utilizar para inicializar los valores predeterminados de registro para Scrapy.
scrapy.utils.log.configure_logging(settings = None, install_root_handler = True)
No Señor | Descripción de parámetros |
---|---|
1 | settings (dict, None) Crea y configura el controlador para el registrador raíz. De forma predeterminada, es Ninguno . |
2 | install_root_handler (bool) Especifica instalar el controlador de registro raíz. Por defecto, es Verdadero . |
La función anterior -
- Enruta las advertencias y los registros retorcidos a través del registro estándar de Python.
- Asigna DEBUG a Scrapy y nivel de ERROR a Twisted loggers.
- Enruta la salida estándar al registro, si la configuración de LOG_STDOUT es verdadera.
Las opciones predeterminadas se pueden anular usando el settingsargumento. Cuando no se especifican los ajustes, se utilizan los valores predeterminados. El controlador se puede crear para el registrador raíz, cuando install_root_handler se establece en verdadero. Si se establece en falso, no habrá ningún conjunto de salida de registro. Al usar comandos Scrapy, configure_logging se llamará automáticamente y se puede ejecutar explícitamente, mientras se ejecutan los scripts personalizados.
Para configurar la salida del registro manualmente, puede usar logging.basicConfig() se muestra de la siguiente manera:
import logging
from scrapy.utils.log import configure_logging
configure_logging(install_root_handler = False)
logging.basicConfig (
filename = 'logging.txt',
format = '%(levelname)s: %(your_message)s',
level = logging.INFO
)