如何在Flask视图中使用应用日志记录,返回无法导入名称记录器

时间:2019-02-25 05:27:15

标签: logging flask

我想使烧瓶项目成为大型项目结构 所以我找到了下面的示例项目

 ~/LargeApp
|-- run.py
|-- config.py
|__ /env             # Virtual Environment
|__ /app             # Our Application Module
     |-- __init__.py
     |-- /module_one
         |-- __init__.py
         |-- views.py
         |-- models.py                
     |__ /templates
         |__ /module_one
             |-- hello.html
     |__ /static
     |__ ..
     |__ .
|__ ..
|__ .

我在/ app / init .py

中编写了create_app函数
def create_app():
    app = Flask(__name__)
    app.config.from_object(os.environ['APP_SETTINGS'])

    app.logger = my_get_logger_function() # this function set log level, and add handler to logger and return logger
    db.init_app(app)

    from .module_one.views import mod as module_one_blueprint
    app.register_blueprint(module_one_blueprint)

    return app

,我想在/app/module_one/views.py中使用记录器, 以下是我的views.py文件

from app import logger
...
@mod.route('/test/', methods=['GET'])
def test():
    logger.info('test')

但是当我跑步时,我收到消息“ ImportError:无法导入名称'logger

我知道这是因为在创建应用之前我在views.py中调用了记录器

但是我真的不知道如何解决它以及如何设计我的项目

2 个答案:

答案 0 :(得分:1)

真正的错误是由于您尚未在模块logger中定义名称app。如果要使用应用程序记录器,则应从current_app导入flask,它是应用程序的实例,如下所示:

from flask import current_app

然后,在您看来,可以使用记录器:

current_app.logger.info('Your message')

答案 1 :(得分:0)

尝试一下:from flask.logging import logging 我也有这个问题,我不知道为什么,但是我尝试了一下,效果很好。