如何在Flask的构架中传递logger给子模块

本文仅为作者自学之用,系统为macOS,不保证信息准确。

Logger的传递

作为一个新手,如何将主函数的logger传入子模块是一件棘手的事情。某些情况下可以直接将logger作为参数传入子模块的构造函数中,但倘若子模块与主模块存在相互依赖的关系则容易出现互相初始化的死循环。尤其是在还不熟悉Flask的时候,如果将Flask的app.logger传给蓝图或其他子模块则会出现上下文context报错。一开始我使用context来解决过这个问题。在实在忍受不了这种格式之后,我去查了一下Flask对于logger的定义文档,里面我终于发现了flask的logger的名字。
于是,在Flask的主函数中设置过logger之后便不再需要将app.logger作为参数传入其他子模块的初始化中,而是直接在其他子模块中调用:

import logging
self.logger = logging.getLogger('flask.app')

就足够了。
对于Logger始终觉得自己学习的还不足,虽然目前满足了项目的需求,但是却还不太清楚自己到底设置过什么,logger传递逻辑是什么等等等等。

你可能感兴趣的:(如何在Flask的构架中传递logger给子模块)