【问题标题】:Python Flask debug logger causes 500 server error in production (Apache)Python Flask 调试记录器在生产中导致 500 服务器错误(Apache)
【发布时间】:2015-07-20 11:41:39
【问题描述】:

尝试将 500 个错误记录到我的 Flask Web 应用程序的日志文件中。在 localhost 上正常工作,但在 Ubuntu 上使用 mod_WSGI 和 Apache 的生产服务器上不能正常工作(根据此设置 @https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps

from flask import Flask, render_template
import logging

app = Flask(__name__)

app.config['LOG_FILE'] = 'application.log'
if not app.debug:
    import logging
    from logging import FileHandler
    file_handler = FileHandler(app.config['LOG_FILE'])
    file_handler.setLevel(logging.INFO)
    app.logger.addHandler(file_handler)

@app.route("/about")
def about():
  ##CREATE AN ERROR
  X = "A" + 1
  return render_template('about.html')

if __name__ == "__main__":
  app.run('0.0.0.0', port=8080, debug=False)

对为什么这在本地环境中有效但在生产环境中无效的任何想法?更改调试设置似乎无法解决。

【问题讨论】:

    标签: python apache logging flask


    【解决方案1】:

    最有可能发生的情况是,您正在使用用户 X 运行 Web 服务器进行开发,并且该用户对存储 Flask 应用程序的目录具有写入权限 - 因此它可以写入 application.log

    我从您发布的教程中注意到,所有目录都是使用 sudo 创建的,因此您的目录权限归 root 用户所有,而您的 Flask 应用程序作为没有写入权限的其他用户运行root 拥有的目录。

    有两个潜在的修复方法:

    将安装 Flask 应用的目录的权限更改为相同:

    $ sudo chown -R www-data:www-data /var/www/FlaskApp
    

    更改您写入日志文件的位置(首选方法):

    $ sudo mkdir /var/log/flaskapp
    $ sudo chown -R www-data:www-data /var/log/flaskapp
    

    然后将代码更改为:

    app.config['LOG_FILE'] = '/var/log/flaskapp/application.log'
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多