使用 django + nginx + Flup 时,打印语句写入哪里?
Posted
技术标签:
【中文标题】使用 django + nginx + Flup 时,打印语句写入哪里?【英文标题】:Where do print statements write to when using django + nginx + flup? 【发布时间】:2012-11-05 19:35:33 【问题描述】:我正在尝试调试我的 django 应用程序,但这很难,因为我不知道我的打印语句将它们的输出发送到哪里。我将flup和fastcgi与django和nginx一起使用,我可以看到python错误并通过nginx访问日志,但我不知道我的打印语句要去哪里。
这是我的 nginx.conf 文件中的相关内容:
server
listen 80;
server_name localhost;
access_log /var/log/nginx/demo.access.log;
error_log /var/log/nginx/demo.error.log;
location /
include fastcgi_params;
fastcgi_pass 127.0.0.1:9001;
我正在使用这个命令运行 fastcgi:
python manage.py runfcgi host=127.0.0.1 port=9001
我基本上遵循了这个教程https://code.djangoproject.com/wiki/DjangoAndNginx,我的操作系统是ubuntu!
感谢您的帮助!
【问题讨论】:
您最好使用文件处理程序设置一些基本的日志记录。查看docs.python.org/2/howto/logging.html 的日志记录方法。设置起来并不麻烦,您可以关闭登录,而不是不断地检查您的代码并添加和删除打印语句。 是的,记录是你的朋友。 与问题无关,但我认为一般的理解是 fastcgi 不是在 nginx 上部署 web 应用程序的最佳方法。 Fastcgi 非常适合 Apache,但在 nginx 上,更好的方法是使用proxy_pass
,然后使用 gevent 或 gunicord 之类的东西,以便为您的 django 应用程序提供服务。
@miki725 FastCGI 也适用于 nginx。
你的打印输出到flup的终端。如果它没有(即在后台作为守护进程运行),那么它可能会转到 /dev/null。
【参考方案1】:
我同意日志记录的建议,但现在链接应该指向集成的 Django 功能,而不仅仅是基本的 Python 库。
https://docs.djangoproject.com/en/dev/topics/logging/
在 Python 代码的顶部进行基本设置和类似以下的简单设置:
import logging
log = logging.getLogger(__name__)
然后你可以在你的代码中做这样的事情:
log.debug('output message')
它将落在您指向 Django 日志记录设置的位置。
【讨论】:
以上是关于使用 django + nginx + Flup 时,打印语句写入哪里?的主要内容,如果未能解决你的问题,请参考以下文章
weblogic能部署python+Django开发的web应用吗