2016-08-13 67 views
-1

我使用scrapy 1.1.0,並且我在「蜘蛛」文件夾中有5個蜘蛛。scrapy使用python3日誌記錄模塊問題

在每個蜘蛛中,我嘗試使用python3日誌模塊。和代碼結構是這樣的:

import other modules 
import logging 
class ExampleSpider(scrapy.Spider): 
    name = 'special' 

    def __init__(self): 
     # other initializations 
     # set log 
     self.log = logging.getLogger('special') 
     self.log.setLevel(logging.DEBUG) 
     logFormatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') 

     # file handler 
     fileHandler = logging.FileHandler(LOG_PATH) # LOG_PATH has defined 
     fileHandler.setLevel(logging.DEBUG) 
     fileHandler.setFormatter(logFormater) 
     self.log.addHandler(fileHandler) 

    # other functions 

每個蜘蛛我運行這些蜘蛛一樣structure.When,我檢查日誌文件,他們確實存在,但它們的大小始終爲0字節。

而另一個問題是,當我運行一個蜘蛛時,它總是生成兩個或更多的日誌文件。像我運行a蜘蛛,它會生成a.logb.log

任何答案將不勝感激。

+0

你用'self.log'登錄什麼?即'self.log.warning('something')'? scrapy有它自己的記錄器,其他所有組件也是如此,你在這裏做的是隻爲你的記錄器設置文件處理程序等。 – Granitosaurus

+0

@Granitosaurus我只想將scrapy輸出保存爲一個日誌文件,我知道現在scrapy(版本1.1.0)已經被棄用,並且支持顯式調用Python標準日誌記錄。 –

回答

0

您可以設置通過LOG_FILE設置在settings.py或通過命令行參數--logfile FILE日誌文件,即scrapy crawl myspider --logfile myspider.log

As described in the official docs

+0

好的,它的工作原理!謝謝。但是如果我想要它輸出到標準輸出並保存爲一個文件,我該怎麼辦? –

+0

你可以使用基本的unix輸出重定向:'scrapy crawl myspider 2>&1> spider.log',其中2>&1將stderr重定向到標準輸出,或者如果你想看到輸出以及使用'tee'和'scrapy crawl myspider 2 >&1 |發球區域spider.log' – Granitosaurus