我有5个Flask应用程序在Blueprint下运行。每个应用程序都有独立的记录器,可以写入stdout。问题是无论何时调用任何HTTP API,该API中的日志都会在屏幕上打印5次,但请求只执行一次。如何修复记录器,以便每个请求只打印一次?
Python 2.7.10 烧瓶0.10.1
答案 0 :(得分:1)
您的问题几乎可以肯定,您已经设置了5个不同的日志记录处理程序以及5个不同的记录器。 Python的内置日志记录系统是一个分层日志记录系统(例如,与为NodeJS构建的普通记录器不同)。所有记录器在运行时形成一个树,日志消息在树中冒泡,由附加到树的处理程序处理。普通的处理程序注册在树的根处注册处理程序,因此每个处理程序都会看到来自每个记录器的消息(这就是为什么你的消息被创建了五次)。
解决方案是为每个蓝图创建一个记录器,但不为蓝图记录器注册任何处理程序。而是在应用程序级别注册一个处理程序。