我有一个Flask项目,还有一些设置文件来定义每个环境的与配置相关的设置(因此一个用于prod,一个用于dev等)。这些值包含与数据库相关的设置,如数据库用户和密码等。
很好,我选择要通过环境变量加载的配置:
app = Flask(__name__)
if os.environ.get("MYPROJ_SETTINGS"):
app.config.from_object("settings." + os.environ.get("MYPROJ_SETTINGS"))
else:
app.config.from_object("settings.default_settings")
陷阱:我也想在这些设置文件中配置日志记录设置,其格式可以是可以传递给dictConfig()
的字典配置。例如,我可能希望默认日志级别在产品中为WARN
,但是在开发人员中为DEBUG
,我可能希望使用其他日志处理程序,等等。
我的问题:如何使此日志记录配置在我的整个项目中保持不变,而不必在各处传递app.config
作为参数?
在Flask中是否有惯用的模式?我看到了各种谈论current_app
上下文的链接,但是我的理解是,这些链接仅在请求的上下文中可用(某些需要配置日志记录的代码与Web处理代码位于单独的模块中)。
过去,在Django中,我只是做过from django.conf import settings
,只要正确设置了DJANGO_SETTINGS_MODULE
,您就可以在代码中的几乎任何地方查看应用程序设置。并记录you just set a LOGGING
dict in those settings,然后在项目中import logging
进行记录时,记录器将使用这些设置进行配置。 Flask中有与之等效的东西吗?