使用mod_wsgi记录Flask错误

2024-03-29 12:10:31 发布

您现在位置:Python中文网/ 问答频道 /正文

很长一段时间以来,我一直在努力让这项工作顺利进行,但现在我真的是束手无策了。我已经尝试了在SO和flask文档中找到的所有东西,但仍然无法使用一个简单的错误日志来调试我的应用程序。下面是粘贴的代码-

# 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>

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


Tags: namefromimportappflaskmainvarlogging
2条回答

您创建的特定错误(语法错误)会导致WSGI脚本文件在mod_WSGI中加载失败。此错误将在Apache错误日志文件中结束,而不是使用日志模块设置的日志文件。您查看过Apache错误日志文件吗?

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

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

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

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

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

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

只是提出一个例外:

@app.route('/')
def hello():
   raise Exception('Deliberate exception raised')

相关问题 更多 >