1、scrapy日志介绍

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

scrapy也使用python日志级别分类

logging.CRITICAL

logging.ERROE

logging.WARINING

logging.INFO

logging.DEBUG

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

import logging

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

(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()参数信息如下:

import logging

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

一般配置:

import logging

LOG_FILE="scrapy.log"

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

LOG_LEVEL="DEBUG"

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

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

控制台中输出的日志:

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

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

python爬虫-scrapy日志的更多相关文章

  1. python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

    操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...

  2. python爬虫Scrapy(一)-我爬了boss数据

    一.概述 学习python有一段时间了,最近了解了下Python的入门爬虫框架Scrapy,参考了文章Python爬虫框架Scrapy入门.本篇文章属于初学经验记录,比较简单,适合刚学习爬虫的小伙伴. ...

  3. python爬虫scrapy项目详解(关注、持续更新)

    python爬虫scrapy项目(一) 爬取目标:腾讯招聘网站(起始url:https://hr.tencent.com/position.php?keywords=&tid=0&st ...

  4. python爬虫scrapy框架

    Scrapy 框架 关注公众号"轻松学编程"了解更多. 一.简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量 ...

  5. Python爬虫Scrapy框架入门(0)

    想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题 ...

  6. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  7. 安装python爬虫scrapy踩过的那些坑和编程外的思考

    这些天应朋友的要求抓取某个论坛帖子的信息,网上搜索了一下开源的爬虫资料,看了许多对于开源爬虫的比较发现开源爬虫scrapy比较好用.但是以前一直用的java和php,对python不熟悉,于是花一天时 ...

  8. Python 爬虫-Scrapy爬虫框架

    2017-07-29 17:50:29 Scrapy是一个快速功能强大的网络爬虫框架. Scrapy不是一个函数功能库,而是一个爬虫框架.爬虫框架是实现爬虫功能的一个软件结构和功能组件集合.爬虫框架是 ...

  9. python爬虫scrapy学习之篇二

    继上篇<python之urllib2简单解析HTML页面>之后学习使用Python比较有名的爬虫scrapy.网上搜到两篇相应的文档,一篇是较早版本的中文文档Scrapy 0.24 文档, ...

随机推荐

  1. C++ lock_guard 互斥锁

    概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁.最终的 ...

  2. 搭建公司的React开发环境

    记录公司环境搭建 1.安装VSCODE, 安装网上的推荐各种控件2.安装node, yarn, 会自动添加path3.先初始化npm 全部按回车默认. npm init.  初始化yarn: yarn ...

  3. framebuffer 知识点

    设备文件是在/dev/目录下设备文件有主设备号,次设备号.当操作设备文件, 系统会根据设备文件的设备号找到相应的设备驱动(驱动在内核注册时已指定使用的设备号),并调用相应的功能.  open ---& ...

  4. Web 自动化

    自动化:由机器设备代替人为自动完成指定目标的过程 自动化测试:由程序代替人为去验证程序功能的过程 为什么要进行自动化测试? 解决-回归测试 压力测试 兼容性测试 提高测试效率,保证产品质量 什么阶段开 ...

  5. POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)

    http://poj.org/problem?id=3264 Time Limit: 5000MS     Memory Limit: 65536K Description For the daily ...

  6. demo4j解析xml

    1//先加入dom4j.jar包 2import java.util.HashMap; 3import java.util.Iterator; 4import java.util.Map; 5 6im ...

  7. java中的赋值

    java中的赋值使用符号“=”. 按照java编程思想的解释:它的意思是“取等号右边的值,把它复制给左边”. 当然左边必须是一个明确的,已命名的变量. 基本类型: int a=2; int b=3; ...

  8. RadixSort(基数排序)原理及C++代码实现

    基数排序是一种思想很值得学习的排序方法. 它突破了正常的排序思维:先排高位,如果高位相同再排次高位,直至最低.它的思想是利用稳定排序从低位开始排,最后再排最高位. 另外它用来划分的位不一定是一位一位的 ...

  9. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...

  10. 《C Prime Plus》第九节笔记

    第九节 函数 9.1 复习函数 函数原型 function prototype 函数调用 function call 函数定义 function definition 形参 实参 典型的ANSI C函 ...