简体   繁体   English

Flask 变量用于 app_context

[英]Flask variable for app_context

Each time you use the self-written CLI command, a call to app_context occurs, as a result of which extra Blueprint is connected, as well as loggers that are called when the project starts.每次使用自己编写的 CLI 命令时,都会调用 app_context,从而连接额外的蓝图,以及在项目启动时调用的记录器。 Is there any list or variable in which I can write from WHERE the call to app_context occurs.是否有任何列表或变量可以在其中写入app_context调用发生的地方。 __name__ is the same everywhere, always returns 'app'. __name__到处都是一样的,总是返回 'app'。

project.py : project.py

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

app/__init__.py : 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

app.logger.info('Project startup') called every time when I'm calling CLI command.每次调用 CLI 命令时都会调用app.logger.info('Project startup') What condition can be added for not call this function when using CLI commands?使用 CLI 命令时不调用这个 function 可以添加什么条件?

You don't need to set the log level if you want to disable app.logger logs.如果要禁用app.logger日志,则无需设置log level Let's check:让我们检查:

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

So you can configure log level using additional argument:因此,您可以使用附加参数配置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)

One more good way is use 2 different configs(first - for web app , second - for CLI app ).另一个好方法是使用 2 个不同的配置(第一个 - 用于web app ,第二个 - 用于CLI app )。 In this case you'll have possibility to customize any setting(including log level ).在这种情况下,您可以自定义任何设置(包括log level )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM