2015-10-18 2335 views
6

我已經創建了一個使用Scrapy的蜘蛛,但我無法弄清楚如何關閉默認日誌記錄。從the documentation看來我應該可以做如何關閉在Scrapy(Python)中的日誌記錄

 logging.basicConfig(level=logging.ERROR) 

將其關閉,但沒有任何效果。從查看logging.basicConfig()的代碼,我猜這是因爲「根記錄器有處理程序配置」,但也許我錯了。在任何情況下,任何人都可以解釋什麼,我需要做的就是Scrapy不輸出通常

 2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 

等?

編輯:如下面sirfz,線

 logging.getLogger('scrapy').setLevel(logging.WARNING) 

建議可以用來設置日誌級別。但是,看起來你必須在蜘蛛的init方法(或更高版本)中執行此操作。

回答

7

你可以簡單地更改scrapy日誌記錄級別(或任何其他記錄器):

logging.getLogger('scrapy').setLevel(logging.WARNING) 

這將禁用所有日誌消息小於WARNING級別。

要禁用,你可以只設置propagateFalse所有scrapy日誌消息:

logging.getLogger('scrapy').propagate = False 

這可以防止傳播至根記錄器(它打印在使用basicConfig()配置控制檯)

+2

謝謝您的幫助!我已經知道,只有當我把它放在我的蜘蛛的__init__中時,才能設置關卡。我從一個腳本運行我的蜘蛛 - 如果我在開始抓取之前設置日誌記錄級別(顯然)會重置爲INFO。我沒有明確地調用「configure_logging」,但我想Scrapy在啓動過程中正在這樣做。 (?) –

+0

我從來沒有使用scrapy自己,但我想爬行是應用'logging'的默認配置,這是奇怪的,因爲這應該留給用戶。 – sirfz

2

啓動腳本時,您可以添加作爲參數。這應該夠了吧。

注意:對於1.1版本改變了一點點:-s LOG_ENABLED=0

0
scrapy的日誌消息

logging.basicConfig(** kwargs)

如果根記錄器已經有處理程序,則此函數不執行任何操作爲其配置了。

Scrapy已經爲它配置了處理程序,所以這是不行的

相關問題