python - 创建简单的 flask 错误应用程序来记录异常

标签 python flask logging

我已将一些代码上传到服务器中。该代码在本地运行,但是当我将其上传到服务器时,它给我一个内部服务器错误。该网站是用wsgi运行的,代码是:

    try:
        from decksite import main, APP as application
    except Exception as e:
        from shared import repo
        repo.create_issue('Error starting website', exception=e)
    
    if __name__ == '__main__':
        print('Running manually.  Is something wrong?')
        application.run(host='0.0.0.0', debug=False)

所以 try 和 except 都失败了。我想添加第二个异常并将其全部传递给一个简单的 Flask 应用程序,该应用程序会将两个异常输出到浏览器并将它们记录到文件中。问题是我不知道如何将异常传递给 error_app Flask 应用程序,并且它在我设置日志配置的行中中断。这是我所做的。我只得到 NoneType: None 而不是完整的异常。

import os, sys
sys.path.append("/home/myuser/public_html/flask");

try:
    from decksite import main, APP as application
except Exception as error:
    #from shared import repo
    #repo.create_issue('Error starting decksite', exception=error)

    #sys.path.insert(0, os.path.dirname(__file__))
    #from error_app import app as application

    # This is the code that goes into the error flask application
    import logging
    import traceback
    from flask import Flask, __version__
    app = Flask(__name__)
    application = app

    @app.route("/")
    def hello():
        return traceback.format_exc()
        # The next line gives Internal Server Error
        logging.basicConfig(filename='example.log', level=logging.DEBUG)
        logging.exception(error)
        return traceback.format_exc()


if __name__ == '__main__':
    print('Running manually.  Is something wrong?')
    application.run(host='0.0.0.0', debug=False)

我的服务器中没有 sudo,并且无法通过 ssh 连接到它,因此除非我能够记录错误,否则我将无法修复任何内容。

编辑:我几乎已经得到了我想要的:

.htaccess

website.wsgi

error_app.py

website/init.py

website/main.py

最佳答案

创建自定义 500 处理程序并打印出引用通告

import traceback

@app.errorhandler(500)
def internal_server_error(e):
    return render_template('500_error.html', traceback=traceback.format_exc())

让您的 '500_error.html' 模板向您显示回溯。

关于python - 创建简单的 flask 错误应用程序来记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63141959/

相关文章:

python - 模板在 django 中不起作用

python - 根据数据框中另一列的值创建新列

python - Flask 在 POST 上忘记路由

javascript - 将脚本输出重定向到 docker 日志

java - log4j 正则表达式? [{}]

python - Qt : Updating UI (with signals) from another class and thread

python - Django + InnoDB : random failure of model reading

python - 为什么使用带有 post 的表单在 python 中发送图像不起作用

mongodb - Python - WTForms 强制对象

javascript - 如何暂时禁用javascript中的log4js登录?