欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scrapy的logging设置

程序员文章站 2022-05-12 10:35:32
...

个人代码

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级别:

 

  1. CRITICAL - 严重错误

  2. ERROR - 一般错误

  3. WARNING - 警告信息

  4. INFO - 一般信息

  5. 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级别来记录信息

 
  1. from scrapy import log

  2. 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