【发布时间】:2020-12-29 17:16:35
【问题描述】:
上下文
在具有多个类和方法的模块中,我使用带有全局变量的 python 日志记录类,称为logger。一旦模块被调用,它就会被initialise_logger(见下文)方法初始化。
问题
当我从 Spyder 多次执行该模块时,记录器会为每条记录器消息创建多个记录记录,即在第一次运行后会打印一次消息“xyz”,在第二次运行后会打印两次等。当我关闭 Spyder 并再次打开它时,模块的第一次运行再次以一条打印消息开始。
我尝试了什么
- 我试图通过检查是否已经存在同名的记录器 (following this post) 来跳过记录器的初始化 (
initialise_logger)。这失败了,因为在我运行initialise_logger之前,具有指定名称的记录器确实不存在。 - 我还尝试在运行
initialise_logger之前“弹出”所有可用的处理程序 (following this seggestion),但在运行initialise_logger之前找不到任何处理程序。
我的代码
def initialise_logger():
global logger
logger = logging.getLogger("reader")
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
file_handler = logging.FileHandler("mylogfile.log")
file_handler.setLevel(logging.DEBUG)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
【问题讨论】:
标签: python-3.x logging spyder