Scrapy第六篇:日志记录、try except和traceback模块

目录

1.主动记录Try except日志

2.开启运行日志

3.异常栈 traceback 模块


1.主动记录Try except日志

在解析过程中,为了保证程序的运行,我们必须try except起来,防止因为个别页面解析错误导致程序奔溃。并做好日志记录,用来追查采集遗漏的原因。

日志记录:①时间、②原因、③出错文件、④出错行

示例如下:

    try:
        1 / 0
    except Exception as e:
        with open('error_log.txt', 'a', encoding='utf8') as f:
            f.writelines(str(datetime.datetime.now())+'\n')
            f.writelines(f'error reason: {e}'+'\n')
            f.writelines(f'error file  : {e.__traceback__.tb_frame.f_globals["__file__"]}'+'\n')
            f.writelines(f"error line  : {e.__traceback__.tb_lineno}"+'\n')
            f.writelines('\n')

2.开启运行日志

系统默认的日志级别是DEBUG,并打印在控制台。日志级别如下:

  • CRITICAL:严重错误
  • ERROR:一般错误
  • WARNING:警告
  • INFO: 一般信息
  • DEBUG:调试信息

 设置日志等级,并记录日志。修改settings.py,加入两项配置:

LOG_LEVEL = 'DEBUG'
LOG_FILE = 'log.txt'

3.异常栈 traceback 模块

上述两种方式有一个弊端,假设我们的主代码中有一个报错,那么日志输出时只会有一行异常对象的值,我们无法追踪定位到底是第几行报错,只能凭程序员的经验或直觉去判断。这时我们可以试试使用 traceback 模块。

traceback.print_exc() # 在屏幕中输出异常栈
traceback.format_exc() # 把异常栈以字符串的形式返回,print(traceback.format_exc()) 的效果相当于 traceback.print_exc()
traceback.print_exception() # 其实traceback.print_exc()函数只是traceback.print_exception()函数的一个简写形式,而它们获取异常相关的数据都是通过sys.exc_info()函数得到的

示例:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值