架构学习(一):scrapy实现按脚本name与日期生成日志文件

原生scrapy日志机制

一般情况下,我们可以直接在setting文件中定义日志文件,这种会把所有脚本的日志都写在同一个文件

LOG_LEVEL = 'INFO'  # 日志级别
LOG_STDOUT = True  # 日志标准输出
LOG_FILE = r'D:\python\crawler\logs\1163.log'  # 日志文件路径

现在为了更好的排查和统计,需要按脚本name与日期生成日志文件,就需要更改LOG_FILE的写入格式和方式

实现流程
  1. 直接setting中定义
    我看过有些教程是这样子实现的,但是我们没法拿到脚本的name
LOG_FILE = '{}_{}.log'.format(spider.name, datetime.now().strftime("%Y-%m-%d"))
  1. 在脚本内的custom_settings中定义
    如下面所示,在初始化时,scrapy会把custom_settings更新到全局的settings中,这种方式是可以实现我们需要的效果,但是要在每个脚本中都声明有点麻烦,我们希望能在初始化时就自动设置上
    在这里插入图片描述
  2. 优化原生方法update_settings
    既然custom_settings会在初始化时被更新到全局的settings中,而且时更新完后,settings配置才生效,那我们只要重写基类实现custom_settings更新到settings的方法即可
    在这里插入图片描述
    如上图所示,在Spider基类中,update_settings实现custom_settings更新到settings,所以只要在基本Spider的类中实现即可,按下图所示操作即可实现了。
    在这里插入图片描述
注意事项

为什么当我们配置了LOG_FILE之后,日志无法在控制台输出呢?
这其实是源码中处理好的,当我们配置了LOG_FILE后,它就只会走写文件这一步走了,默认情况下就是控制台输出,因为LOG_ENABLED默认为True
在这里插入图片描述
当然,一般情况下,正式环境也不需要控制台日志,文件存储即可。当然,如果真要实现文件与控制台一起输出,可以重写_get_handler方法,也可以在初始化时给logger对象添加一个控制台输出对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433406.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用阿里通义千问大语言模型API-小白新手教程-python

阿里大语言模型通义千问API使用新手教程 最近需要用到大模型,了解到目前国产大模型中,阿里的通义千问有比较详细的SDK文档可进行二次开发,目前通义千问的API文档其实是可以进行精简然后学习的,也就是说,是可以通过简单的API调用在自己网页或…

【Java 数据结构】List接口详解

List 1. 什么是List2. 常见方法介绍3. List的使用 1. 什么是List 在集合框架中,List是一个接口,继承自Collection。 Collection也是一个接口, Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具…

element-UI上传文件后valid提示不消失

问题描述&#xff1a;上传文件完成后&#xff0c;必填信息提示不消失 解决方法&#xff1a;在<el-form-item>标签添加show-message属性&#xff0c;字段为空时才显示提示信息 <el-form-item :prop"fileList" :show-message"!form.fileList || !form.f…

详解矩阵的LDU分解

目录 一. 矩阵分解 二. 解方程 三. 例题说明 四. 矩阵的LDU分解 五. 矩阵三角分解的唯一性 一. 矩阵分解 其实我们可以把一个线性系统&#xff08;Linear System&#xff09;看成两个三角系统&#xff08;Triangular Systems&#xff09;&#xff0c;本文章将解释为什么可…

基于Mybatis,Vue,ajax,ElementUI实现的增删改查

下面是项目获取连接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/158eyyhg2X1bQtMEVT1ut1Q?pwd1234 提取码&#xff1a;1234 界面如下&#xff1a;

外卖跑腿系统开发:构建高效、安全的服务平台

在当今快节奏的生活中&#xff0c;外卖跑腿系统的开发已成为技术领域的一个重要课题。本文将介绍如何使用一些常见的编程语言和技术框架&#xff0c;构建一个高效、安全的外卖跑腿系统。 1. 技术选择 在开始开发之前&#xff0c;我们需要选择适合的技术栈。常用的技术包括&a…

如何看待程序员抄代码还拿着高薪这一说法?

程序员的工资构成&#xff1a;会复制粘贴值1块&#xff0c;知道去哪复制值5K&#xff0c;知道粘贴在哪值10K&#xff0c;粘贴完了能跑起来值15 有人说&#xff1a;能带领一伙人复制粘贴值20k。 有人说&#xff1a;能写一个自动复制粘贴的系统值30k。 有人纳闷问到&#xff1a…

pinia实现todos

store/todos.js //导入defineStore import {defineStore} from pinia const userTodosStoredefineStore(todos,{ state:()>({// list:[// {id:1,name:吃饭,done:false},// {id:2,name:睡觉,done:true},// {id:3,name:打豆豆,done:false}// ],list:JSON.parse(l…

OpenAI为ChatGPT推出多语言功能Alpha版灰度测试;微软Copilot网页端和App更新了GPTs和购买Copilot Pro功能

OpenAI为ChatGPT推出多语言功能灰度测试。 微软Copilot网页端和App更新了GPTs和购买Copilot Pro功能 关于ChatGPT的详细介绍请看我这篇文章&#xff1b;关于Copilot Pro的详细介绍请看我这篇文章。 OpenAI推出多语言功能灰度测试 1月26日&#xff0c;OpenAI对其广受欢迎的C…

Cesium工具应用

文章目录 0.引言1.场景截图2.卷帘对比3.反选遮罩4.鹰眼视图5.指南针与比例尺6.坐标测量7.距离测量8.面积测量9.热力图10.视频投影11.日照分析12.淹没分析13.通视分析14.可视域分析15.缓冲区分析16.地形开挖17.要素聚合18.开启地下模式19.开启等高线20.坡度坡向21.填挖方量计算2…

对话泛能网程路:能源产业互联网,行至中程

泛能网的能源产业互联网的标杆价值还不仅于此。其在产业互联之外&#xff0c;也更大的特殊性在于其也更在成为整个碳市场的“辅助运营商”&#xff0c;包括电力、碳等一系列被泛能网帮助企业改造和沉淀的要素资产&#xff0c;都在构成着碳交易市场的未来底层。 这恰是产业互联…

解决:‘chromedriver’ executable needs to be in PATH

解决&#xff1a;chromedriver’ executable needs to be in PATH 文章目录 解决&#xff1a;chromedriver’ executable needs to be in PATH背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;检查python安装路径有没有添加到环境变量里面方法二&#xff1…