如果是按照从网上找的例子来写log 的话,只要重复运行,就会出现第一次log记录一条日志,第二次log记录2条同样的日志,第三次记录3条同样的日志以此类推~~~
例如log.py中内容
在dos下运行>log.py
到当前文件(log.py)的目录下找kws30.log,即可发现问题.
log.py解决了问题.关键语句是:
log.py中每次logging写日志之后,未调用用logger.removeHandler( hdlr )语句.
#log.py
def initlog():
import logging
logger = None
logger = logging.getLogger()
hdlr = logging.FileHandler("kws30.log")
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.NOTSET)
return [logger,hdlr]
def logMsg( fun_name, err_msg,level ):
message = fun_name + ':'+err_msg
logger,hdlr = initlog()
logger.log(level ,message )
hdlr.flush()
#logger.removeHandler( hdlr )网络上的实现基本为说明这条语句的使用和作用
if ( __name__ == "__main__"):
for k in ["fun1","fun2","fun3"]:
logMsg( "main",k, 1 )
print "1111"
测试:
#logger.removeHandler( hdlr )网络上的实现基本为说明这条语句的使用和作用
使用这条语句和注释掉这条语句的区别
使用~~~:情况下.log下是
2008-04-18 11:00:47,328 Level 1 main:fun1
2008-04-18 11:00:47,328 Level 1 main:fun2
2008-04-18 11:00:47,328 Level 1 main:fun3
注释掉的情况:
2008-04-18 11:01:24,296 Level 1 main:fun1
2008-04-18 11:01:24,296 Level 1 main:fun2
2008-04-18 11:01:24,296 Level 1 main:fun2
2008-04-18 11:01:24,296 Level 1 main:fun3
2008-04-18 11:01:24,296 Level 1 main:fun3
2008-04-18 11:01:24,296 Level 1 main:fun3