pythonscrapy爬虫_python爬虫-scrapy日志

1、scrapy日志介绍

1452265-20191212091331252-1433322333.png

Scrapy的日志系统是实现了对python内置的日志的封装

1452265-20191212091552507-1686339121.png

scrapy也使用python日志级别分类

logging.CRITICAL

logging.ERROE

logging.WARINING

logging.INFO

logging.DEBUG

2、如何在python中使用日志呢?

import logging

(1)日志对应的格式字符串

1452265-20191212105430371-1590040382.png

(2)创建一个logger

logger = logging.getLogger("%s_log" %__name__)

logger.setLevel(logging.INFO) # 设定日志等级

(3)创建一个handler,用于写入日志文件

fh = logging.FileHandler("test.log", mode="a")

fh.setLevel(logging.WARNING)

(4)定义handler的输出格式

formatter = logging.Formatter("%(asctime)s - %(filename)s [line:%(lineno)d] - %(levelname)s: %(message)s")

fh.setFormatter(formatter)

(5)将对应的handler添加在logger对象中

logger.addHandle(fh)

(6)正常使用logger.log、logger.debug、logger.info、logger.warning、logger.error、logger.critical

logger.log(level, msg, *args, **kwargs)

logger.debug(msg, *args, **kwargs)

(7)还有一种简单地使用日志的方法,没有上面那么繁琐:

logging.baseConfig()参数信息如下:

1452265-20191212111843112-808680939.png

importlogging

logging.baseConfig(filename="", filemode="", format="", datefmt="", stylefmt="", style="", level="", stream="")

logging.info(msg,*args, **kw)

loggin.debug(msg,*args, **kw)

logging.warning(msg,*args, **kw)

3、如何在scrapy中配置日志呢?

在scrapy中使用日志很简单,只需在settings.py中设置LOG_FILE和LOG_LEVEL两个配置项就可以了

#一般在使用时只会设置LOG_FILE和LOG_LEVEL两个配置项,其他配置项使用默认值

#指定日志的输出文件

LOG_FILE#是否使用日志,默认为True

LOG_ENABLED#日志使用的编码,默认为UTF-8

LOG_ENCODING#日志级别,如果设置了,那么高于该级别的就会输入到指定文件中

LOG_LEVEL#设置日志的输出格式

LOG_FORMAT#设置日志的日期输出格式

LOG_DATEFORMAT#设置标准输出是否重定向到日志文件中,默认为False,如果设置为True,那么print("hello")就会被重定向到日志文件中

LOG_STDOUT#如果设置为True,只会输出根路径,不会输出组件,默认为FALSE

LOG_SHORT_NAMES

一般配置:

importlogging

LOG_FILE="scrapy.log"

#LOG_LEVEL=logging.DEBUG|logging.INFO|logging.WARNING|logging.ERROR|logging.CRITICAL

LOG_LEVEL="DEBUG"

4、如何在scrapy的组件中使用自输出日志呢?

我们在控制台下跑爬虫时出现的一系列输出都是有scrapy的日志系统在各组件中自行配置的,我们也可以在我们编写的组件中,自己输出一些日志,用于检测

控制台中输出的日志:

1452265-20191212110242604-889997928.png

下面是从Spider类中抽出来的一个属性,在自构造的爬虫类中self.logger返回一个对象,而这个对象中有log、debgu、info等方法,所以我们可以在爬虫组件中使用self.logger.log()、self.logger.debug()等来输出日志,而在其它组件中,会将spider作为参数传进其他组件对象的方法中,所以我们也可以在其它组件中使用spider.logger.log()、spider.logger.debug()等在输出日志。

@propertydeflogger(self):

logger=logging.getLogger(self.name)return logging.LoggerAdapter(logger, {'spider': self})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值