【发布时间】:2011-02-19 14:36:48
【问题描述】:
我正在尝试在我的 Python 2.7 应用程序中实现日志记录,并且发现它非常有用。但是,我注意到当以交互方式运行 Python 时,每条日志消息都会打印多次。打印消息的次数与我之前运行脚本的次数相同,因此似乎在脚本末尾没有正确清理记录器(我猜)。考虑以下示例:
import sys
import logging
def main(argv=None):
log = logging.getLogger('test')
log.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter("%(message)s"))
log.addHandler(console_handler)
log.info('Starting something...')
log.info('Doing something...')
log.info('Finished something.')
logging.shutdown()
if __name__=='__main__':
sys.exit(main(sys.argv[1:]))
打字
>>> import file.py
>>> file.main()
产生以下结果:
Starting something...
Doing something...
Finished something.
然后再次输入file.main() 会产生:
Starting something...
Starting something...
Doing something...
Doing something...
Finished something.
Finished something.
重复第三次将给出三个或每个消息,依此类推。有谁知道为什么会发生这种情况 - 这是日志模块的预期行为吗?如果是,我该如何更改?如预期的那样,如果作为脚本 (python file.py) 运行,上述脚本只会打印每条消息中的一条。
【问题讨论】:
标签: python logging interactive