鍍金池/ 教程/ Java/ Scrapy日志
Scrapy項目加載器(Item Loader)
Scrapy快速入門
Scrapy蜘蛛(Spider)
Scrapy教程
Scrapy定義項目
Scrapy執(zhí)行爬行捉取
Scrapy項目(Items)
Scrapy安裝
Scrapy提取項目
Scrapy第一個Spider
Scrapy選擇器(Selector)
Scrapy Shell
Scrapy創(chuàng)建項目
Scrapy命令行工具
Scrapy日志
Scrapy使用項目

Scrapy日志

日志記錄是指使用內置的日志系統(tǒng)和定義的函數(shù)或類來實現(xiàn)應用程序和庫的事件跟蹤。 記錄日志是一個即用型的程序庫,它可以在Scrapy設置日志記錄中的設置列表工作。 Scrapy將運行命令時使用 scrapy.utils.log.configure_logging() 設置一些默認設置和如何處理這些設置。

日志級別 - Log levels

在Python中日志消息有五種不同級別的嚴重程度。下面的列表以升序顯示標準的日志消息:

  • logging.DEBUG - 用于調試信息(最低嚴重性)

  • logging.INFO - 用于信息消息

  • logging.WARNING - 用于警告消息

  • logging.ERROR- 用于正則錯誤

  • logging.CRITICAL - 用于嚴重錯誤(最高嚴重性)

如何記錄消息

下面給出簡單的代碼顯示日志記錄是使用 logging.info 級別的消息。

import logging
logging.info("This is an information")

以上日志信息可以通過使用 logging.log 參數(shù)傳遞,如下所示:

import logging
logging.log(logging.INFO, "This is an information")

現(xiàn)在,也可以使用 loggers 來關閉消息,通過記錄日志助手來獲取日志消息,如下圖所示:

import logging
logger = logging.getLogger()
logger.info("This is an information")

可以有多個記錄器,可以通過 logging.getLogger()函數(shù)使用名字進行訪問,如下圖所示。

import logging
logger = logging.getLogger('mycustomlogger')
logger.info("This is an information")

自定義記錄器可以通過使用模塊路徑 name 變量用于其它任何模塊中,如下所示:

import logging
logger = logging.getLogger(__name__)
logger.info("This is an information")

Spider的日志記錄

每個 spider 實例都有一個內置記錄器,并可調用如下:

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)

在上面的代碼中,logger是使用蜘蛛的名字創(chuàng)建的,但您可以使用Python提供的自定義 logger,如下面的代碼:

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)

日志記錄配置

記錄器不能夠顯示由自己發(fā)出消息。因此,它們需要“處理程序”顯示這些消息,以及處理程序將它們被重定向這些消息到各自的目的地,如文件,電子郵件,標準輸出。

根據(jù)下面的設置,Scrapy 將配置 logger 的處理程序。

日志消息設置

下面給出的設置用于配置日志記錄:

LOG_FILELOG_ENABLED 決定日志消息目的地。

當您設置了 LOG_ENCODING ,它不會顯示日志輸出消息。

LOG_LEVEL 設置確定消息的嚴重性順序;嚴重程度不高的消息將被過濾掉。

LOG_FORMATLOG_DATEFORMAT 用于指定所有消息的布局。

當您設置 LOG_STDOUT 為 true ,所有的進程的標準輸出和錯誤消息將被重定向到日志中。

命令行選項

Scrapy設置可以通過命令行參數(shù)來覆蓋,如下面的表:

S.N. 命令 描述
1 —logfile FILE 覆蓋 LOG_FILE
2 —loglevel/-L LEVEL 覆蓋 LOG_LEVEL
3 —nolog 設置 LOG_ENABLED 為 false

要手動配置日志輸出,可以使用 logging.basicConfig(),如下所示:

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
)

參考 - https://doc.scrapy.org/en/0.24/topics/logging.html