Flask variable for app_context



每次使用自行编写的CLI命令时,都会调用app_context,从而连接额外的Blueprint以及在项目启动时调用的记录器。有没有任何列表或变量可以从调用app_context的位置写入。__name__在任何地方都是一样的,总是返回"app"。

project.py:

from app import create_app, cli
app = create_app()
cli.register(app)

app/__init__.py:

db = SQLAlchemy()
migrate = Migrate()

def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
app.logger.setLevel(logging.INFO)
app.logger.info('Project startup')
return app

每次调用CLI命令时都调用app.logger.info('Project startup')。使用CLI命令时,如果不调用此函数,可以添加什么条件?

如果要禁用app.logger日志,则不需要设置log level。让我们检查一下:

app = Flask('')
# app logs are disabled. uncomment to see app logs.
# app.logger.setLevel(logging.INFO)
app.logger.info('Project startup')

因此,您可以使用附加参数配置log level

def create_app(config_class=Config, log_level=None):
app = Flask(__name__)
app.config.from_object(config_class)
if log_level:
app.logger.setLevel(logging.INFO)

还有一个好的方法是使用两种不同的配置(第一种-用于web app,第二种-用于CLI app(。在这种情况下,您可以自定义任何设置(包括log level(。

最新更新