2017-01-10 240 views
1

這裏是我的Scrapy代碼...這是我從Scrapy official documentationScrapy日誌記錄:配置日誌重寫日誌文件

import logging 
from scrapy.utils.log import configure_logging 

configure_logging(install_root_handler=False) 
logging.basicConfig(
    filename='log.txt', 
    format='%(levelname)s: %(message)s', 
    level=logging.INFO, 
    filemode = 'w' 
) 

複製現在的問題是,即使誤差閾值是「INFO」它仍然打印「 DEBUG'消息。

有沒有人爲什麼會發生這種情況?還有其他設置需要配置嗎?

而且,如果我在settings.py文件中設置下面的標誌,它工作正常(預期)...

LOG_FILE = 'mylog.txt' 
LOG_LEVEL = 'INFO' 

我沒有看到在日誌中打印任何「DEBUG」的消息。但是,每次爬行器運行時,它都會附加到日誌文件中。我需要清除文件並在每次抓取時重新寫入。

感謝

+0

所以你正在運行scrapy作爲腳本吧? – eLRuLL

+0

我使用scrapy crawl 從命令行運行爬蟲。我仍然處於開發模式,所以一旦我完成開發,我可能會將此命令移至一個cron文件,讓它每24小時自動運行一次。 – Slyper

回答

0

如果你是在命令行中運行scrapy,你不需要這個logging配置,因爲它已經被默認值(更多信息here)調用。相反,在settings.py文件中設置的變量:

LOG_FORMAT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s' 
LOG_LEVEL = 'INFO' 
# DON'T SET LOG_FILE 

現在,scrapy目前尚未支持直接記錄FILEMODE(我sending a PR添加此功能),但你可以在你的終端輸出重定向到一個文件(和總是覆蓋它):

scrapy crawl myspider &> file.log 

請記住,這隻會工作,如果你設置LOG_FILE(因爲它會創建一個FileHandler而不是StreamHandler)。