Scrapy生成的調試信息非常有用,但是通常太啰嗦,你可以在Scrapy項目中的setting.py中設置日志顯示等級:
LOG_LEVEL = 'ERROR'
日志級別
Scrapy日志有五種等級,按照范圍遞增順序排列如下:(注意《Python網絡數據采集》書中這里有錯)
- CRITICAL - 嚴重錯誤
- ERROR - 一般錯誤
- WARNING - 警告信息
- INFO - 一般信息
- DEBUG - 調試信息
如果日志層級設置為ERROR,那么只有CRITICAL和ERROR日志會顯示出來。
如果日志層級設置為DEBUG,那么所有信息都會顯示出來,其它同理。
設置log級別
可以通過終端選項 -loglevel/-L 或 LOG_LEVEL 來設置log級別。
記錄信息
下面給出如何使用WARING級別來記錄信息
from scrapy import log log.msg("This is a warning", level=log.WARING)
在Spider中添加log
在spider中添加log的推薦方式是使用Spider的 log() 方法。該方法會自動在調用 scrapy.log.start() 時賦值 spider 參數。
其它的參數則直接傳遞給 msg() 方法
scrapy.log模塊
scrapy.log.start(logfile=None, loglevel=None, logstdout=None)
啟動log功能。該方法必須在記錄任何信息之前被調用。否則調用前的信息將會丟失。
參數:
- logfile(str) - 用於保存log輸出的文件路徑。如果被忽略,LOG_FILE設置會被啟用。如果兩個參數都是None(默認值),log會被輸出到標准錯誤流(stderr),一般都直接打印在終端命令行中。
- loglevel - 記錄的最低日志級別,可用的值在上面提到了
- logstdout(boolean) - 如果設置為True,所有的應用的標准輸出(包括標准錯誤)都將記錄,例如,如果程序段中有 "print hello",那么執行到這里時,"hello"也會被記錄到日志中。
scrapy.log.msg(message,level=INFO,spider=None)
記錄信息
參數:
- message(str) - log信息
- level - 該信息對應的級別
- spider(spider 對象) - 記錄信息的spider。當記錄的信息和特定的spider有關聯時,該參數必須使用
默認情況下日志顯示在終端,但也可以通過下面的命令輸出到一個獨立的文件中:
$scrapy crawl spiderName -s LOG_FILE=spider.log (注意這里等號兩邊沒有空格)
或者上面提到的 start() 中參數指定輸出文件位置。
如果目錄中沒有spider.log 那么運行程序會創建一個新文件,然后把所有的日志都保存到里面。
如果已經存在,會在原文后面追加新的日志內容。