【2017年整理】python logging learning01日志重复记录,日志记录混乱 - 副本

上传人:爱****1 文档编号:992031 上传时间:2017-05-24 格式:DOCX 页数:2 大小:20.41KB
返回 下载 相关 举报
【2017年整理】python logging learning01日志重复记录,日志记录混乱 - 副本_第1页
第1页 / 共2页
【2017年整理】python logging learning01日志重复记录,日志记录混乱 - 副本_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《【2017年整理】python logging learning01日志重复记录,日志记录混乱 - 副本》由会员分享,可在线阅读,更多相关《【2017年整理】python logging learning01日志重复记录,日志记录混乱 - 副本(2页珍藏版)》请在金锄头文库上搜索。

1、1. 编写 python 脚本实现不间断 ping, 并且实现日志记录import osimport timeimport threadingimport multiprocessingimport logging#switch=target=CCCPrinter01:192.168.0.12,CertificatePrinter01:192.168.0.13,FuelPrinter02:192.168.0.14formatter = logging.Formatter(%(name)s %(asctime)s %(levelname)s %(message)s, %a, %d %b %Y %

2、H:%M:%S,) mutex=threading.Lock()def logmaker(info,logfile,logger): logger=logging.getLogger(logger)handler=logging.FileHandler(logfile) handler.setFormatter(formatter)logger.addHandler(handler) logger.error(ping %s failed%info)logger.removeHandler(handler) def logmaker_mutex(info,logfile): if mutex.

3、acquire():logger=logging.getLogger() handler=logging.FileHandler(logfile)handler.setFormatter(formatter) logger.addHandler(handler)logger.error(ping %s failed%info)1.1、出现问题,记录日志的时候,日志重复记录,第一遍循环时,重复记录一次;第二次循环时候,重复记录两次,依次增加下去问题函数如下:def logmaker(info,logfile,logger):logger=logging.getLogger(logger)hand

4、ler=logging.FileHandler(logfile)handler.setFormatter(formatter)logger.addHandler(handler)logger.error(ping %s failed%info)原因:问题函数中没有调用 logger.removeHandler(handler)改进后的代码如下:def logmaker(info,logfile,logger):logger=logging.getLogger(logger)handler=logging.FileHandler(logfile)handler.setFormatter(form

5、atter)logger.addHandler(handler)logger.error(ping %s failed%info) logger.removeHandler(handler)问题得以解决1.2、代码中设计有三个 log 文件用来记录三个打印机的网络连接日志,如果 ping 不通,就记录在相应的日志里面,出现的问题:记录日志时,日志混乱,相应打印机的日志没有记录到对应的 log 文件中,呈现随机存放到三个文件的现象。问题代码段:红色加粗字体部分def logmaker(info,logfile,logger):logger=logging.getLogger()handler=l

6、ogging.FileHandler(logfile)handler.setFormatter(formatter)logger.addHandler(handler)logger.error(ping %s failed%info)logger.removeHandler(handler)原因:在调用 getLogger 时要提供 Logger 的名称(注:多次使用相同名称来调用getLogger,返回的是同一个对象的引用。getLogger 如果不提供参数,默认为 root改进后的代码如下:添加函数参数,当记录不同打印机的日志时,指定不同的 logger 名称def logmaker(info,logfile,logger):logger=logging.getLogger(logger)handler=logging.FileHandler(logfile)handler.setFormatter(formatter)logger.addHandler(handler)logger.error(ping %s failed%info)logger.removeHandler(handler)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号