使用 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 时,打印语句写入哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在 Nginx 上部署 Django

Nginx + fastcgi 截断问题

转:Apache+Fastcgi+Django

weblogic能部署python+Django开发的web应用吗

Windows下Nginx+Web.py+FastCGI服务搭建

css 未在 django 生产中加载