Yul*_*ong 8 python logging flask gunicorn
我正在使用gunicorn + Nginx运行Flask Web应用程序.我在daemon模式中运行gunicorn .我配置了gunicorn和nginx来记录他们对文件的访问和错误.但我无法将Flask日志记录到文件中.
我使用shell文件用gunicorn启动我的应用程序:
   #!/bin/bash
   export VIRTUAL_ENV="/to/virtual/path"
   export PATH="$VIRTUAL_ENV/bin:$PATH"
   source "$VIRTUAL_ENV/bin/activate"
   NAME="hello"
   NUM_WORKERS=1
   exec gunicorn hello:app \
       --name $NAME \
       --workers $NUM_WORKERS \
       --log-level=debug \
       --daemon \
       --pid $VIRTUAL_ENV/logs/pid_gunicorn \
       --access-logfile $VIRTUAL_ENV/logs/access_gunicorn.log \
       --error-logfile $VIRTUAL_ENV/logs/error_gunicorn.log    
在我的烧瓶应用程序中,我根据文档要求添加日志记录:
app.debug = False
...
if __name__ == '__main__':
    if app.debug != True:
        import logging
        from logging.handlers import RotatingFileHandler
        handler = RotatingFileHandler("flask.log", maxBytes=10000, backupCount=1)
        handler.setLevel(logging.DEBUG)
        app.logger.addHandler(handler)
        app.logger.debug("test!!")
    app.run()
我还在app.logger.debug其他地方添加了.
当我gunicorn没有开始时--daemon,日志文件工作正常.但是一旦我添加,--daemon就不会生成任何日志.
我尝试使用,print但它只能没有--daemon.
我已经搜索了一段时间,似乎 gunicorn不支持应用程序日志记录.但我认为记录到文件会没问题?
有人知道如何在我的设置下注销文件吗?
运行守护进程的 Python 方式是使用类似Supervisord 的东西,忘记 bash,它是 Python。您是否考虑过使用 nginx 作为代理通行证?Gunicorn 可以处理 WSGI。我认为它从 1.3.13 开始就可用。它适用于 websockets,但即使您运行 http 协议也能工作。
就像是
server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/example.log;
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
| 归档时间: | 
 | 
| 查看次数: | 2295 次 | 
| 最近记录: |