每次使用自写的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命令时可以添加哪些条件以使其不调用此功能?
答案 0 :(得分:0)
如果要禁用log level
日志,则无需设置app.logger
。让我们检查一下:
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)
一种更好的方法是使用2个不同的配置(第一个-用于web app
,第二个-用于CLI app
)。在这种情况下,您将可以自定义任何设置(包括log level
)。