Nginx + FastCGI + Django 架构下错误日志在哪里找?

Nginx 错误日志默认在 /var/log/nginx/error.log,Django 应用日志取决于 settings.py 的 LOGGING 配置与进程管理方式。本文给出三层日志的定位方法与配置示例。

最佳实践
Nginx + FastCGI + Django 架构下错误日志在哪里找?封面

排查顺序:这套架构的错误分布在三层——Nginx 层默认在 /var/log/nginx/error.log(配置与反代问题);Django 应用层位置由 settings.pyLOGGING 配置决定,未配置时走运行容器的 stderr(systemd journal、supervisor 或容器日志);数据库慢查询另有自己的日志。先看 Nginx 日志判断请求是否到达上游,再看应用日志。

第一层:Nginx 日志

Ubuntu/Debian 与 CentOS 默认位置一致:

  • 错误日志:/var/log/nginx/error.log
  • 访问日志:/var/log/nginx/access.log

实际路径以配置为准,查 /etc/nginx/nginx.conf/etc/nginx/sites-enabled/ 下的站点配置:

server {
    listen 80;
    server_name example.com;

    error_log /var/log/nginx/example-error.log warn;
    access_log /var/log/nginx/example-access.log;

    location / {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:8000;
    }
}

502 Bad Gateway 说明 Nginx 连不上 FastCGI 进程;504 是上游超时——这两类问题在 Nginx 日志里定界,再到应用层定位。

第二层:Django 应用日志

Django 默认只把 ERROR 级日志发给管理员邮件,写文件需要在 settings.py 配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/var/log/django/app.log',
            'maxBytes': 10 * 1024 * 1024,
            'backupCount': 5,
        },
    },
    'root': {'handlers': ['file'], 'level': 'WARNING'},
}

没配置文件处理器时,日志输出到进程 stderr:supervisor 托管看在 supervisord.conf 配的 stderr_logfile;systemd 托管用 journalctl -u django-app;uWSGI/gunicorn 各自有 --error-logfile 参数。

第三层:FastCGI 进程日志

如果通过 manage.py runfcgi 或 flup 跑 FastCGI,进程自身也有错误输出参数;现代部署更推荐 gunicorn/uWSGI + unix socket 替代 FastCGI,日志体系更清晰。

观测云对照

三层日志一个平台看。 DataKit 的 Nginx 集成采集访问/错误日志并解析成字段,Django 应用日志按文件或容器采集;配合 APM 探针,从 Nginx 的 502 一路追到 Django 里具体哪行代码报错。

常见问题(FAQ)

Q:页面 500 但 Django 日志什么都没有?
A:DEBUG = False 时 Django 默认只发邮件不写文件,务必配置文件处理器;也检查日志目录对应用用户可写。

Q:fastcgi_pass 报 connect() failed 怎么查?
A:先确认 FastCGI 进程在跑(ss -ltnp | grep 8000),再看 Nginx error.log 的具体报错,多半是进程挂了或端口/socket 不匹配。

Q:能在 Nginx 日志里看到请求耗时吗?
A:在 log_format 里加 $request_time$upstream_response_time,可区分网络耗时与应用耗时。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台