【问题标题】:uwsgi + flask logging.config not working and also breaks applicationuwsgi + flask logging.config 无法正常工作并且还会破坏应用程序
【发布时间】:2018-07-27 22:26:45
【问题描述】:

过去 5 小时一直在寻找答案,但一无所获。

我有一个烧瓶 (python 2.7) 应用程序可以在 uwsgi 上正常工作,但我没有日志。

/etc/uwsgi/uwsgi.ini 配置:

[uwsgi]
socket = /tmp/uwsgi.sock
chown-socket = nginx:nginx
chmod-socket = 664
cheaper = 2
processes = 16

/app/uwsgi.ini

[uwsgi]
module = main
callable = app

/app/main.py(没有 uwsgi 也能正常工作)

app = Flask(__name__)
...
...
...
if __name__ == "__main__":
    with open("{0}/logging.config.json".format(CONFIG_PATH), "r") as fd:
        logging.config.dictConfig(json.load(fd))
    app.run()

logging.config.json:

...
"formatters": {
  "simple": {
      "()": "pythonjsonlogger.jsonlogger.JsonFormatter",
      "format": "%(asctime)s %(levelname)s %(module)s %(message)s"
    }
...
"handlers": {
"console":{
      "level": "DEBUG",
      "class": "logging.StreamHandler",
      "formatter": "simple",
      "stream" : "ext://sys.stdout"
  },
  "loggers": { },
  "root": {
      "handlers": ["console"],
      "level": "DEBUG"
  }
}

我还尝试将记录器移到 main 之外(一篇文章建议这样做),如下所示:

app = Flask(__name__)

with open("{0}/logging.config.json".format(CONFIG_PATH), "r") as fd:
    logging.config.dictConfig(json.load(fd))
...
...
...
if __name__ == "__main__":
    app.run()

它只是破坏了 uwsgi:

--- no python application found, check your startup logs for errors ---

与应用声明之前的日志声明相同(但没有错误 - 应用无法运行)

有什么建议吗?

【问题讨论】:

    标签: python-2.7 logging flask uwsgi


    【解决方案1】:

    好吧,我发现了问题:

    "formatters": {
    "simple": {
      "()": "pythonjsonlogger.jsonlogger.JsonFormatter",
      "format": "%(asctime)s %(levelname)s %(module)s %(message)s"
    }
    

    pythonjsonlogger 是我几十年前手动安装但忘记的库。声明 logging.config.dictConfig() 时没有正确加载。

    此外,无论谁看到,uWSGI 只调用 app.run(),如果你想查看任何日志,你应该在声明 app.run 之前声明日志。例如:

    with open("{0}/logging.config.json".format(CONFIG_PATH), "r") as fd:
        logging.config.dictConfig(json.load(fd))
    
    app = Flask(__name__)
    ...
    ...
    ...
    if __name__ == "__main__":
        app.run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 2015-11-03
      • 2017-01-21
      • 2012-01-02
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      相关资源
      最近更新 更多