使用FastCGI和Django,我应该在哪里找到nginx的错误日志?

448

我正在使用Django与FastCGI + nginx。在这种情况下,日志(错误)存储在哪里?

11个回答

580
错误信息存储在nginx日志文件中。您可以在nginx配置文件的根目录中指定它:
error_log  /var/log/nginx/nginx_error.log  warn;

在Mac OS X上使用Homebrew,默认情况下日志文件位于以下位置:

/usr/local/var/log/nginx

13
这可能与版本有关,但我的日志记录在/opt/nginx/logs/error.log中。 - jmarceli
56
在Mac OS X中使用Homebrew安装的nginx的日志文件路径为:/usr/local/var/log/nginx。请参考lfender的答案(链接:https://dev59.com/nHI-5IYBdhLWcg3wu7BU#27402568)。 - Félix Adriyel Gagnon-Grenier
15
在Ubuntu上,我将其放在/var/log/nginx/error.log中。最好检查nginx.conf文件并找到error_log设置。 - MarthyM
2
在 /opt/homebrew/var/log/nginx/error.log 中发现我的矿了,哈哈。当前正在 macOS 13(Ventura)上运行。似乎你可以运行 nginx -h 命令来查看默认的日志输出目录。 - takanuva15

340

我正在寻找一种不同的解决方案。

在我的系统(x86 Arch Linux)上,在任何配置设置之前,默认情况下,错误日志可以在以下位置找到:

/var/log/nginx/error.log

1
显然,这只能通过编译选项--error-log-path来进行配置,该选项需要在编译时设置。详情请参考http://trac.nginx.org/nginx/ticket/147。 - Michael Berkowski
在树莓派3上,它的位置是... - Jan Bludau

199

在大多数情况下,您可以使用lsof(打开文件列表)来查找打开的日志文件,而无需了解配置。

示例:

查找 httpd 的 PID(相同的概念适用于nginx和其他程序):

$ ps aux | grep httpd
...
root     17970  0.0  0.3 495964 64388 ?        Ssl  Oct29   3:45 /usr/sbin/httpd
...

然后使用 lsof 命令并带上进程ID来搜索开放的日志文件:

$ lsof -p 17970 | grep log
httpd   17970 root    2w   REG             253,15     2278      6723 /var/log/httpd/error_log
httpd   17970 root   12w   REG             253,15        0      1387 /var/log/httpd/access_log
如果您期望能够找到日志文件但lsof没有输出任何内容,请使用sudo再次尝试相同的命令。更多信息请参见这里

6
记住这个小技巧很不错,以后就不用猜日志文件放在哪里了。 - Yo Ludke
23
这让我学会了如何钓鱼;但愿我能投更多赞。 - kurttheviking
2
+1 针对如何查找的答案。我正在寻找另一个nginx安装的日志,而它并不在最佳答案中。 - Robert Dundon
1
你可以在Linux的/proc文件系统中查看类似的数据。/proc/${pid}/fd有指向打开的文件、管道、设备等的符号链接。 - Avindra Goolcharan
当我使用 [$ ps aux | grep httpd] 命令时,输出显示 =auto httpd (红色)。请问您知道这是什么意思吗? - Debbie

119

运行此命令,以检查错误日志:

tail -f /var/log/nginx/error.log

44

我的nginx日志存放在这里:

/usr/local/var/log/nginx/*

您还可以检查您的nginx.conf文件,看看是否有指令转储到自定义日志中。

运行nginx -t命令来定位您的nginx.conf文件。

# in ngingx.conf
error_log  /usr/local/var/log/nginx/error.log;
error_log  /usr/local/var/log/nginx/error.log  notice;
error_log  /usr/local/var/log/nginx/error.log  info;

Nginx通常安装在/usr/local/etc/中。服务器也可以配置为将日志转储到/var/log中。
如果您的Nginx安装在其他位置且其他方法失败,则可以使用find命令来查找所需文件。 find /usr/ -path "*/nginx/*" -type f -name '*.log',其中/usr/是您希望开始搜索的文件夹。

如果您使用Homebrew安装了Nginx,则日志将在此处。 - Sridhar Sarnobat

24

Linux服务器上的日志位置:

Apache – /var/log/httpd/

IIS – C:\inetpub\wwwroot\

Node.js – /var/log/nodejs/

nginx – /var/log/nginx/

Passenger – /var/app/support/logs/

Puma – /var/log/puma/

Python – /opt/python/log/

Tomcat – /var/log/tomcat8

10
在终端中输入以下命令:
sudo cat /var/log/nginx/error.log

2
那不是一个答案,应该改为评论。一旦您有足够的声望,您将能够发表评论。 - mrun

8
对于Mac OS用户,您可以在终端中键入nginx -help
nginx version: nginx/1.21.0
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /opt/homebrew/Cellar/nginx/1.21.0/)
  -e filename   : set error log file (default: /opt/homebrew/var/log/nginx/error.log)
  -c filename   : set configuration file (default: /opt/homebrew/etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

然后,您可以找到一些默认路径用于配置和日志文件,在这种情况下:

/opt/homebrew/log/nginx/error.log

4
cd /var/log/nginx/
cat error.log

1

在nginx配置文件中设置访问日志的位置是一个好习惯。使用access_log /path/,像这样。

keyval $remote_addr:$http_user_agent $seen zone=clients;

server { listen 443 ssl;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers   HIGH:!aNULL:!MD5;

if ($seen = "") {
    set $seen  1;
    set $logme 1;
}
access_log  /tmp/sslparams.log sslparams if=$logme;
error_log  /pathtolog/error.log;
# ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接