
- Scrapy 教程
- Scrapy - 首頁
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 環境
- Scrapy - 命令列工具
- Scrapy - 爬蟲 (Spiders)
- Scrapy - 選擇器 (Selectors)
- Scrapy - 專案 (Items)
- Scrapy - 專案載入器 (Item Loaders)
- Scrapy - Shell
- Scrapy - 專案管道 (Item Pipeline)
- Scrapy - 資料匯出 (Feed exports)
- Scrapy - 請求 & 響應
- Scrapy - 連結提取器 (Link Extractors)
- Scrapy - 設定
- Scrapy - 異常
- Scrapy 實戰專案
- Scrapy - 建立專案
- Scrapy - 定義專案
- Scrapy - 第一個爬蟲
- Scrapy - 爬取
- Scrapy - 提取專案
- Scrapy - 使用專案
- Scrapy - 跟蹤連結
- Scrapy - 抓取資料
- Scrapy 有用資源
- Scrapy - 快速指南
- Scrapy - 有用資源
- Scrapy - 討論
Scrapy - 日誌記錄
描述
日誌記錄是指對事件的跟蹤,它使用內建的日誌系統並定義函式和類來實現應用程式和庫。日誌記錄是一個現成的工具,可以與列在日誌記錄設定中的 Scrapy 設定一起使用。
Scrapy 將設定一些預設設定,並在執行命令時使用 scrapy.utils.log.configure_logging() 來處理這些設定。
日誌級別
在 Python 中,日誌訊息有五個不同的嚴重級別。以下列表按升序顯示標準日誌訊息:
logging.DEBUG − 用於除錯訊息(最低嚴重級別)
logging.INFO − 用於資訊性訊息
logging.WARNING − 用於警告訊息
logging.ERROR − 用於常規錯誤
logging.CRITICAL − 用於嚴重錯誤(最高嚴重級別)
如何記錄訊息
以下程式碼演示瞭如何使用logging.info級別記錄訊息。
import logging logging.info("This is an information")
上述日誌訊息可以使用logging.log作為引數傳遞,如下所示:
import logging logging.log(logging.INFO, "This is an information")
現在,您還可以使用日誌記錄器來使用日誌記錄幫助程式 logging 包裹訊息,以便清楚地顯示日誌訊息,如下所示:
import logging logger = logging.getLogger() logger.info("This is an information")
可以有多個日誌記錄器,可以透過使用logging.getLogger函式獲取其名稱來訪問它們,如下所示。
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")
從爬蟲中記錄日誌
每個爬蟲例項在其內部都有一個logger,可以使用如下所示:
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)
在上面的程式碼中,日誌記錄器是使用爬蟲的名稱建立的,但是您可以使用 Python 提供的任何自定義日誌記錄器,如下面的程式碼所示:
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)
日誌記錄配置
日誌記錄器本身無法顯示它們傳送的訊息。因此,它們需要“處理程式”來顯示這些訊息,並且處理程式將把這些訊息重定向到各自的目標,例如檔案、電子郵件和標準輸出。
根據以下設定,Scrapy 將為日誌記錄器配置處理程式。
日誌記錄設定
以下設定用於配置日誌記錄:
LOG_FILE和LOG_ENABLED決定日誌訊息的目標。
當您將LOG_ENCODING設定為false時,它將不會顯示日誌輸出訊息。
LOG_LEVEL將確定訊息的嚴重性順序;嚴重性較低的訊息將被過濾掉。
LOG_FORMAT和LOG_DATEFORMAT用於指定所有訊息的佈局。
當您將LOG_STDOUT設定為true時,程序的所有標準輸出和錯誤訊息都將重定向到日誌。
命令列選項
Scrapy 設定可以透過傳遞命令列引數來覆蓋,如下表所示:
序號 | 命令 & 說明 |
---|---|
1 | --logfile FILE 覆蓋LOG_FILE |
2 | --loglevel/-L LEVEL 覆蓋LOG_LEVEL |
3 | --nolog 將LOG_ENABLED設定為False |
scrapy.utils.log 模組
此函式可用於初始化 Scrapy 的日誌記錄預設值。
scrapy.utils.log.configure_logging(settings = None, install_root_handler = True)
序號 | 引數 & 說明 |
---|---|
1 | settings (dict, None) 它建立並配置根日誌記錄器的處理程式。預設情況下為None。 |
2 | install_root_handler (bool) 它指定安裝根日誌記錄處理程式。預設情況下為True。 |
上述函式:
- 透過 Python 標準日誌記錄路由警告和 Twisted 日誌記錄。
- 將 DEBUG 分配給 Scrapy,並將 ERROR 級別分配給 Twisted 日誌記錄器。
- 如果 LOG_STDOUT 設定為 true,則將 stdout 路由到日誌。
可以使用settings引數覆蓋預設選項。如果未指定設定,則使用預設值。當 install_root_handler 設定為 true 時,可以為根日誌記錄器建立處理程式。如果將其設定為 false,則不會設定任何日誌輸出。使用 Scrapy 命令時,configure_logging 將自動呼叫,並且在執行自定義指令碼時可以顯式執行。
要手動配置日誌記錄的輸出,可以使用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 )