Python日志处理器,同时打印到控制台和保存到文件中,并保证格式一致

news2024/11/26 15:35:07

使用logging模块的时候,默认是输出到控制台的,当然也可以配置输出到文件中,但是当你配置了文件后,控制台的输出就消失了,所以,需要一个策略即能保存到文件中,又能输出到控制台中。

下面是我做的优化:logging模块默认会创建一个处理器,所以只需要创建一个控制台的处理器即可

import logging

# 第一步:创建文件日志对象
logger = logging.getLogger()
# 第二步:创建文件日志处理器,默认logging会自己创建一个处理器
file_fmt = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=file_fmt, filename="./log.txt", filemode="a", encoding="utf-8")
console_handler = logging.StreamHandler()
# 第三步:添加控制台文本处理器
console_handler.setLevel(level=logging.DEBUG)
console_fmt = "%(asctime)s - %(levelname)s - %(message)s"
fmt1 = logging.Formatter(fmt=console_fmt)
console_handler.setFormatter(fmt=fmt1)
# 第四步:将控制台日志器、文件日志器,添加进日志器对象中
logger.addHandler(console_handler)

if __name__ == '__main__':
    logger.info("这是一条info消息")

实现的效果: 文件中的格式和控制台是一样的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORB-SLAM2实时稠密地图,解决运行报段错误(核心已转储)运行数据集时出现段错误,出现可视化界面后闪退(添加实时彩色点云地图+保存点云地图)

高翔的稠密建图仓库 1. git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git 2. 去ORB SLAM2里拷贝Vocabulary到/home/cgm/ORBSLAM2_with_pointcloud_map/ORB_SLAM2_modified文件夹下 3. 删除一些build文件夹 删除ORB_SLAM2_modified/Thirdparty/DB…

国产手机芯片4G方案_紫光展锐安卓核心板虎贲4G智能模块方案定制

元器件清单即BOM物料清单,不同行业领域的BOM表侧重点不一样。安卓主板的BOM表则侧重点在于元器件物料的清单,也就是安卓电路板的PCBA清单,精密的安卓板有上千个物料,可以帮助我们估算物料成本,建立生产计划&#xff0c…

Ftp服务器、 Samba服务器、NFS服务器的区别

根据使用的方式来看,可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。ftp的客户可以是任意平台,samba是专门针对windows客户,而NFS则是面向linux/unix用户的。下面是三种服务器…

CRM软件系统价格不同的原因

很多人在了解CRM系统时,发现不同品牌的CRM价格有着很大的区别。一些CRM系统只需要几千块钱,一些CRM系统的报价却要上万,甚至十几万。为什么CRM系统价格不同?下面我们就来说说。 1、功能不同 从功能方面来说,一些CRM系…

OpenCV Series : Slope + Radian + Degree

def lineSlope(p1, p2):slope (p2[1] - p1[1]) / (p2[0] - p1[0])return slopedef slopeAngle(p1, p2):slope lineSlope(p1, p2)radian np.arctan(slope)return radiandef angleDegree(radian):theta int(radian * 180 / np.pi) % 360return theta

【LeetCode热题100】--3.无重复字符的最长子串

3.无重复字符的最长子串 使用滑动窗口: 使用两个指针表示字符串中的某个子串(或窗口)的左右边界,其中左指针代表着枚举字串的起始位置,而右指针即为 r k r_k rk​在每一步操作中,我们会将左指针向右移动一…

Python类练习

文章目录 题目要求步骤 题目要求 1)创建一个 Kid 类,包含姓名,性别,年龄属性和 play 方法 2) 创建一个 Stu 类,继承 Kid 类,同时包含成绩属性,获取成绩方法,努力学习方法,play方法&…

RocketMQ核心编程模型以及生产环境最佳实践

⼀、回顾 RocketMQ 的消息模型 ⼆、深⼊理解 RocketMQ 的消息模型 1 、 RocketMQ 客户端基本流程 RocketMQ 基于 Maven 提供了客户端的核⼼依赖: 使⽤客户端进⾏编程时,添加这⼀个核⼼依赖就够了。 另外还有⼀个与权限控制相关的核⼼依赖也需要了解。尽…

「聊设计模式」之迭代器模式(Iterator)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是软件开发中经验的总结,是一种被反复…

开学季什么触控笔好用又便宜?推荐平价的电容笔

由于iPad平板的强大功能,才让iPad拥有了更多的用户。拿来画画、记笔记什么的体验都是很不错。但是仅仅是拿来看电视、玩游戏,似乎作用不大。如果你不是想要一支昂贵的苹果电容笔,或者只是想要在日常生活中做笔记,那么你可以考虑一…

springcloud3 分布式事务解决方案seata之TCC模式6

一 TCC模式 1.1 TCC的逻辑 TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC需要人工干预编写代码。需要实现三个方法: Try:资源的检测和预留; Confirm:完成资源操作业务;要求 Try 成…

three.js——几何体划分顶点添加不同的材质

几何体划分顶点添加不同的材质 前言效果图.addGroup(顶点的下标, 获取几个顶点, 选择材质的下标)在vue中使用 前言 上篇文章讲解了怎样通过索引划分顶点,通过顶点绘制图形,本章通过addGroup方法讲解根据划分的顶点来添加不同的材质 效果图 .addGroup(‘顶点的下标’…

精品SpringCloud电影院购票系统-微服务-分布式

《[含文档PPT源码等]精品基于SpringCloud实现的电影院购票系统设计的设计与实现-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:Java 框架:springcloud JDK版…

【JDK 8-集合框架进阶】6.1 parallelStream 并行流

一、parallelStream 并行流 1.1 串行 和 并行的区别 > 执行结果 二、问题 2.1 paralleStream 并行是否一定比 Stream 串行快? 2.2 是否可以都用并行? > 报错 三、实战 > 执行结果 四、总结 一、parallelStream 并行流 多线程并发处理&#xff…

视频号:平均一场裂变7965人,电商增长玩法全揭秘!

我们整理了几何裂变平台上电商行业近3个月的视频号裂变活动,发现用的最多的玩法是粉丝裂变,其次是直播裂变。 平均一场视频号粉丝裂变活动涨粉7965人,裂变层级9级,裂变率872%,即1个老用户能带来8.72个新用户关注视频号…

数字孪生基础设施需求分析

数字孪生基础设施需求分析 “基础设施”(infrastructure)新型基础设施建设 “基础设施”(infrastructure) 一词最早于1875年在法文中出现,但该词汇由拉丁文构成,infrastructure分为infra(拉丁文…

汽车电子——产品标准规范汇总和梳理(适应可靠性)

文章目录 前言 一、电气性能要求 二、机械性能要求 三、气候性能要求 四、材料性能要求 五、耐久性能要求 六、防护性能要求 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、电气性能要求 《GB/T 28046.2-2019(ISO 16750-2:2012&#…

算法简述-串和串的匹配、排序、深度/广度优先搜索、动态规划、分治、贪心、回溯、分支限界

目录 算法简述 基本 典型算法列举 串和串的匹配 排序 深度/广度优先搜索 动态规划 分治 贪心 回溯 分支限界 算法简述 基本 咳咳嗯…算法嘛,咱也不是 CS 科班学生,咱就说,算法是对已经建模后的问题的解决的具体途径和方法&#x…

A-小美种果树(二分)-- 牛客周赛 Round 12

输入 1 2 10 输出 6 解析&#xff1a; 二分&#xff0c;注意两端端点L、R的取值&#xff01;&#xff01;&#xff01; #include<bits/stdc.h> using namespace std; #define int long long int x,y,z; signed main(){scanf("%lld%lld%lld",&x,&y,…

链表反转-两两交换链表中的节点

LeetCode24.给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。必须在不修改节点内部的值的情况下完成本题(即&#xff0c;只能进行节点交换) 如果原始顺序是 dummyHead -> node1 -> node2&#xff0c;交换后面两个节点关系要变成 …