关于解决logging模块写出的日志信息重复的问题
一般情况下,我们在利用logging模块记录日志的时候,往往会利用下面这种方式进行日志信息的记录:
import logging def logger_file():
#生成logger对象
whw_logger = logging.getLogger('whw.log')
whw_logger.setLevel(logging.INFO)
#生成handler对象
whw_fh = logging.FileHandler('whw.log')
whw_fh.setLevel(logging.INFO)
#生成Formatter对象
file_formatter = logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ')
#把formatter对象绑定到handler对象中
whw_fh.setFormatter(file_formatter)
# 把handler对象绑定到logger对象中
whw_logger.addHandler(whw_fh)
return whw_logger if __name__ == '__main__':
while 1:
s = input('请输入日志信息:')
logger_file().info(s)
生成的log日志里总会出现重复的同一条信息:


我们可以再写一个方法,将写好的信息处理一下:
def write_log(msg):
log_obj = logger_file()
log_obj.info(msg)
log_obj.handlers.pop()
这样,完整的代码如下:
import logging def logger_file():
#生成logger对象
whw_logger = logging.getLogger('whw.log')
whw_logger.setLevel(logging.INFO)
#生成handler对象
whw_fh = logging.FileHandler('whw.log')
whw_fh.setLevel(logging.INFO)
#生成Formatter对象
file_formatter = logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ')
#把formatter对象绑定到handler对象中
whw_fh.setFormatter(file_formatter)
# 把handler对象绑定到logger对象中
whw_logger.addHandler(whw_fh)
return whw_logger def write_log(msg):
log_obj = logger_file()
log_obj.info(msg)
log_obj.handlers.pop() if __name__ == '__main__':
while 1:
s = input('请输入日志信息:')
write_log(s)
对于同样的输入,我们得到的结果就没有了重复信息:

关于解决logging模块写出的日志信息重复的问题的更多相关文章
- 解决logging模块日志信息重复问题
解决logging模块日志信息重复问题 问题描述 相信大家都知道python的logging模块记录日志信息的步骤: # coding:utf-8 import logging ### 创建logge ...
- Python logging模块无法正常输出日志
废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...
- log4j 日志信息的引入(通用版)——解决项目运行过程中的日志信息
定义 log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程 ...
- python day 9: xlm模块,configparser模块,shutil模块,subprocess模块,logging模块,迭代器与生成器,反射
目录 python day 9 1. xml模块 1.1 初识xml 1.2 遍历xml文档的指定节点 1.3 通过python手工创建xml文档 1.4 创建节点的两种方式 1.5 总结 2. co ...
- 日志(logging模块)
1. 为什么要使用日志(作用) 在学习过程中,写一个小程序或小demo时,遇到程序出错时,我们一般会将一些信息打印到控制台进行查看,方便排查错误.这种方法在较小的程序中很实用,但是当你的程序变大,或是 ...
- Python之日志处理(logging模块)
本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...
- 【转】Python之日志处理(logging模块)
[转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...
- Python之日志处理 logging模块
Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...
- Python之日志处理(logging模块)转载
本人主要做一个知识的归类与记录,如是转载类文章,居首都会备注原链接,尊重原创者,谢谢! 此文转载原链接:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 ...
随机推荐
- maven settings.xml配置优化
<?xml version="1.0" encoding="UTF-8"?> <settings> <localRepositor ...
- MySQL--Checkpoint基础
===================================================== Checkpint 分两种:Sharp Checkpoint : 在服务器正常关闭时,将所有 ...
- 使用Intellij IDEA新建Web项目
在学习Servlet的过程中,发现大多数的教程都是使用MyEclipse或者Eclipse来创建Web项目,这让一直使用高逼格的LZ很是不爽,于是自己配置了一下使用Intellij IDEA新建了We ...
- Django 之老师讲的教师,班级学生,class_2_teacher四个表格的项目
现数据库中有四张表格 要求:实现查询功能 页面显示教师 id 姓名 教学班级 url 处设置 url(r'teacher_list/',teacher_list), teacher_list函 ...
- Unity3D常用网络框架与实战解析 学习
Socket using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; u ...
- Python基础_私有变量访问限制
Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外 ...
- 在公司上wifi
公司的wifi上不了咋办?自己搞! 做法: 把自己的newifi mini带到公司, 记录公司内网ip,登入路由器设置, 1. 把ip改为内网一致, 2.关闭dhcp功能 3.设置wifi 网线连接: ...
- es高级部分
1 关于机器 配置. 内存:上亿的数据一般需要64G内存的服务器.劲量不要使用小于32G 内存的服务器. cpu:es 对cpu 要求依赖不如内存.一般要求2-8 核就可以了. 磁盘:es 对磁盘依赖 ...
- 5、微信卡券code模式
非自定义Code码: "use_custom_code":false,可以群发卡券,客服消息派发卡券 自定义code: "use_custom_code":tr ...
- ASP.NET AJAX入门系列(10):Timer控件简单使用
本文主要通过一个简单示例,让Web页面在一定的时间间隔内局部刷新,来学习一下ASP.NET AJAX中的服务端Timer控件的简单使用. 主要内容 Timer控件的简单使用 1.添加新页面并切换到设计 ...