【问题标题】:How to use app logging in flask views, it returns cannot import name logger如何在烧瓶视图中使用应用程序日志记录,它返回无法导入名称记录器
【发布时间】:2019-02-25 05:27:15
【问题描述】:

我想将烧瓶项目制作成大型项目结构 所以我找到了如下示例项目

 ~/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: cannot import name 'logger

我知道这是因为我在创建应用程序之前在 views.py 中调用了 logger

但我真的不知道如何修复它以及如何设计我的项目

【问题讨论】:

    标签: logging flask


    【解决方案1】:

    真正的错误是由于您没有在模块app 中定义名称logger。如果您想使用应用记录器,您应该从flask 导入current_app,这是您应用的实例,如下所示:

    from flask import current_app
    

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

    current_app.logger.info('Your message')
    

    【讨论】:

    • 谢谢!!!我想我是真正的白痴。我发现了另一个页面。但我尝试“从应用程序导入 current_app”...我不知道为什么我没有找到烧瓶...
    【解决方案2】:

    试试这个:from flask.logging import logging 我也遇到了这个问题,不知道为什么,试过了,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多