Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 uwsgi+flask logging.config不工作,也会中断应用程序_Python 2.7_Logging_Flask_Uwsgi - Fatal编程技术网

Python 2.7 uwsgi+flask logging.config不工作,也会中断应用程序

Python 2.7 uwsgi+flask logging.config不工作,也会中断应用程序,python-2.7,logging,flask,uwsgi,Python 2.7,Logging,Flask,Uwsgi,在过去的5个小时里一直在寻找答案,但什么也没找到 我有一个flask 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 =

在过去的5个小时里一直在寻找答案,但什么也没找到

我有一个flask 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 one post之外,建议如下:

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 ---
与应用程序声明之前的日志声明相同,但没有错误-应用程序无法工作


有什么建议吗?

我发现了问题:

"formatters": {
"simple": {
  "()": "pythonjsonlogger.jsonlogger.JsonFormatter",
  "format": "%(asctime)s %(levelname)s %(module)s %(message)s"
}
pythonjsonlogger是我几十年前手动安装的一个库,但我忘记了。声明logging.config.dictConfig时未正确加载

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

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()