7

很长一段时间以来,我一直在努力让它发挥作用,但我现在真的束手无策。我已经尝试做我在 SO 和烧瓶文档中可以找到的所有事情,但我仍然无法使用简单的错误日志来调试我的应用程序。以下是粘贴的代码 -

# main.py
from flask import Flask
import logging

app = Flask(__name__)
file_handler = logging.FileHandler(filename='/tmp/election_error.log')
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)

@app.route('/')
def hello():
   return "hello
   #missing quotes to generate error

if __name__ == "__main__":
   app.run()


#wsgi file
import sys
import logging
sys.path.insert(0, "/var/www/voting_app")
logging.basicConfig(stream=sys.stderr)
from main import app as application


# apache2 conf file
WSGIDaemonProcess voting_app threads=5
WSGIScriptAlias /election /var/www/voting_app/voting_app.wsgi

LogLevel info

<Directory /var/www/voting_app>
        WSGIProcessGroup voting_app
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
</Directory>

请告诉我哪里出错了。太感谢了。

4

2 回答 2

6

您创建的特定错误(语法错误)会导致 WSGI 脚本文件甚至无法加载到 mod_wsgi。此错误最终会出现在 Apache 错误日志文件中,而不是您使用日志记录模块设置的日志文件中。您是否查看过 Apache 错误日志文件?

对于请求执行期间引发的异常,Flask 默认会将其转换为 500 错误页面,否则会抑制详细信息的显示。您需要设置 Flask 以通过其他方式发送或记录此类运行时异常:

http://flask.pocoo.org/docs/errorhandling/

如果您希望在返回浏览器的 500 页面中显示运行时异常以用于开发目的,则需要启用 Flask 调试模式。这是通过将 app.debug 设置为 True 来完成的:

http://flask.pocoo.org/docs/config/?highlight=app%20debug

您不应该在面向用户的生产系统上启用调试模式。

于 2012-11-04T19:45:59.420 回答
3

您需要生成运行时异常,而不是编译时异常。缺少引号是编译时异常,您的日志记录代码将永远不会被执行。

只需引发异常:

@app.route('/')
def hello():
   raise Exception('Deliberate exception raised')
于 2012-11-04T09:45:09.703 回答