scrapy的logging设置
个人代码
spider代码(见else)
layNum = 0
for lay in info:
layNum += 1
layoutID = self.newspaperID + publishDate + '{:0>2}'.format(layNum)
itemLay = LayoutItem()
itemLay['PaperDate'] = paperDate # 发行日期
itemLay['LayoutID'] = layoutID # 版面ID
itemLay['Edition'] = lay[1].split(':')[0].strip() # 版次
itemLay['PageName'] = lay[1].split(':')[1].strip() # 版面名称
itemLay['PDFUrl'] = lay[2].split('/')[-1] # PDF文件名
if layNum == 1:
itemLay['IsCover'] = 1 # 是否首版
else:
itemLay['IsCover'] = 0
itemLay['PDFUrl'] = lay[2].split('/')[-1]
itemLay['PDFBytes'] = self.parsePdfImg(lay[2])
# 下级url解析
url_LA = 'http://epaper.routeryun.com/Page/index/pageid/{}.html#{}'.format(lay[0], lay[0])
yield scrapy.Request(url=url_LA, callback=self.parseLay, meta={'layNum':layNum,'itemLay': itemLay},
dont_filter=True)
else:
logging.info('#'*50)
logging.info('版面数量'+str(layNum))
setting设置
# 设置日志
import datetime
import os
toDay = datetime.datetime.now()
filePath = r'..\..\log'
if not os.path.exists(filePath):
os.makedirs(filePath)
logFilePath = r'..\..\log\log_{}_{}_{}.log'.format(toDay.year,toDay.month,toDay.day)
LOG_FILE = logFilePath
LOG_LEVEL = 'INFO'
日志设置1
log 信息级别从低到高依次是:notset、debug、info、warn、error、critical,日志只会显示比设置的日志等级高的级别,等级低的不会显示。
scrapy中:
默认终端显示的是debug级别的log信息
在setting里面设置
LOG_LEVEL = WARN #log日志的级别
LOG_FILE = "./..." # log日志的存储位置
在scrapy里面导入日志:
import logging
logger = logging.getLogger(__name__) #实例化一个logger
logger.warning(item)
--------------------- 本文来自 suelai 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/suelai/article/details/79462160?utm_source=copy
日志设置2
Scrapy提供5层logging级别:
-
CRITICAL - 严重错误
-
ERROR - 一般错误
-
WARNING - 警告信息
-
INFO - 一般信息
-
DEBUG - 调试信息
logging设置
通过在setting.py中进行以下设置可以被用来配置logging:
LOG_ENABLED 默认: True,启用logging
LOG_ENCODING 默认: ‘utf-8’,logging使用的编码
LOG_FILE 默认: None,在当前目录里创建logging输出文件的文件名
LOG_LEVEL 默认: ‘DEBUG’,log的最低级别
配置示例
# setting.py
from datetime import datetime
# 文件及路径,log目录需要先建好
today = datetime.now()
log_file_path = "log/scrapy_{}_{}_{}.log".format(today.year, today.month, today.day)
# 日志输出
LOG_LEVEL = 'DEBUG'
LOG_FILE = log_file_path
使用
logging.debug("baidu debug")
--------------------- 本文来自 彭世瑜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/mouday/article/details/80524182?utm_source=copy
日志设置3
目录文件
Hello/
scrapy.cfg
Hello/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
文件夹设置
文件及路径,log目录需要先建好
log建立在第一个Hello的下面
Linux平台:要给log文件夹相应的权限
代码的书写
在settings.py里进行添加以下代码
today = datetime.now()
log_file_path = "log/{}-{}-{} {}:{}:{}.log".format(today.year, today.month, today.day,today.hour,today.minute,today.second)
LOG_LEVEL= 'DEBUG'
LOG_FILE =log_file_path
--------------------- 本文来自 rightfight 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/y_z_w123/article/details/81182054?utm_source=copy
日志设置4
参考来源:《Python网络数据采集》41页
参考来源:Scrapy文档
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 那么运行程序会创建一个新文件,然后把所有的日志都保存到里面。
如果已经存在,会在原文后面追加新的日志内容。
--------------------- 本文来自 hopyGreat 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hopygreat/article/details/78771500?utm_source=copy
推荐阅读
-
在vue项目中,将juery设置为全局变量的方法
-
在php中设置session用memcache来存储的方法总结
-
coreldraw怎么画直线?cdr直线长短的设置方法
-
pr2019外观颜色怎么设置? premiere2019外观颜色的设置方法
-
sublime text 3快捷键失效怎么办?解决sublime text 3快捷键失效的设置方法
-
Notepad++怎么配置默认语言?notepad设置默认语言为c和Java语言的方法
-
premiere怎么设置视频的高宽尺寸?
-
连接到SQL Server 2008时,在默认的设置下SQL Server不允许进行远程连接可能会导致此失败(Microsoft SQL Server,错误:1006
-
Linux下的Apache与PHP安全设置技巧
-
apache,nginx上传目录无执行权限的设置方法