关于解决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 本节内容 ...
随机推荐
- 学生信息管理 和ROM常见的操作
ORM版学员管理系统 班级表 表结构 class Class(models.Model): id = models.AutoField(primary_key=True) # 主键 cname = m ...
- nginx unit nodejs 模块试用(续)
最新(应该是18 年了)nginx unit 发布了新的版本,对于nodejs 的支持有很大的改进,上次测试过,问题还是 比较多,这次使用新版本在测试下对于nodejs 的支持,以及以前block ...
- EXtJS Ext.data.Model
(一).首先我们介绍一下Model类中比较常用的几个属性,如果我们想构建一个Model类,最主要的属性就是(Fields)属性,这个属性接受一个数组.用来设置Model中所包含的字段.定义的格式如下: ...
- window.onload与$(document).ready()
window.onload是原生JS事件,$(document).ready()是Jquery实现的与其作用类似的事件. 二者区别如下: 1.执行时间不同 $(document).ready()是DO ...
- day 30 1.操作系统原理 2. Process 模块学习
进程: 起源:进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的.所以想要真正了解进程,必须事先了解操作 ...
- Yuan先生的博客网址
1 Web应用 https://www.cnblogs.com/yuanchenqi/articles/8869302.html 2 http协议 https://www.cnblogs.com/y ...
- mongodb之 3.4.0 mongodb sharing 副本集群搭建
系统系统 centos6.5三台服务器:10.100.25.42/43/44安装包: mongodb-linux-x86_64-rhel62-3.4.0.tgz 服务器规划:mongos mongos ...
- mysql 不允许分组的问题
异常信息:this is incompatible with sql_mode=only_full_group_by 解决办法: 找到 my.cnf find / -name my.cnf 然后在 ...
- C# 多线程控制
C# 多线程控制 通讯 和切换 一.多线程的概念 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程.什么是进 ...
- 会话状态Session
一.会话状态Session Session用于服务器端状态管理,使用Session之后,每个客户端都可以将实际的数据保存在服务器上,对于每个客户端的数据,将会生成一个对应的唯一的key(保存在客户端) ...