我想使烧瓶项目成为大型项目结构 所以我找到了下面的示例项目
~/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中调用了记录器
但是我真的不知道如何解决它以及如何设计我的项目
答案 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
我也有这个问题,我不知道为什么,但是我尝试了一下,效果很好。