每次使用自行编写的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
(。