我正在编写我的第一个Flask应用程序。应用程序本身运行良好。我刚刚有一个关于登录生产模式的新手问题。
基本结构:
app/
app/templates/
app/static
config.py
flask/... <- virtual env with flask + extensions
run.py
应用程序由run.py
脚本启动:
#!flask/bin/python
import os.path
import sys
appdir = os.path.dirname(os.path.abspath(__file__))
if appdir not in sys.path:
sys.path.insert(1, appdir)
from app import app as application
if __name__ == '__main__':
application.run(debug=True)
并直接启动或从Apache 2.4 Web服务器启动。我在apache配置中有这些行:
WSGIPythonHome /usr/local/opt/app1/flask
WSGIScriptAlias /app1 /usr/local/opt/app1/run.py
在前一种情况下,debug=True
是开发所需的全部内容。
我还想为后一种情况进行一些日志记录,即在生产服务器上的Apache下运行时。以下是Flask文档的建议:
if not app.debug:
import logging
from themodule import TheHandlerYouWant
file_handler = TheHandlerYouWant(...)
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)
它需要一些自定义,但这就是我想要的 - 没有设置app.debug
标志的情况说明。这里也给出了类似的建议:
How do I write Flask's excellent debug log message to a file in production?
请帮忙:我在哪里放这个代码?
更新:根据大卫的评论和我得到的第一个答案,我认为当前简单形式的应用程序不适合我的要求。我将修改它以使用此处推荐的不同配置数据集:http://flask.pocoo.org/docs/0.10/config/#development-production。如果我的申请量较大,我会按照pech0rin的答案。
UPDATE2:我认为这里的关键是环境变量应该控制应用程序的配置方式。
答案 0 :(得分:1)
我在using int_tree_t =
boost::make_recursive_variant <
int,
std::vector<boost::recursive_variant_>>::type;
↑↑↑↑↑↑
函数中设置日志记录配置方面取得了很大成功。这使用application factory pattern。这允许您传入一些参数或配置类。然后使用您的参数专门创建应用程序。
这允许您在将应用程序发回运行之前初始化应用程序,设置日志记录以及执行您想要执行的任何操作。
例如:
create_app
这在我的生产环境中非常有效。 YMMV