ChatGPT解决这个技术问题 Extra ChatGPT

我在哪里可以找到使用 FastCGI 和 Django 的 nginx 的错误日志?

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


P
Peter Mortensen

错误存储在 nginx 日志文件中。您可以在 nginx 配置文件的根目录中指定它:

error_log  /var/log/nginx/nginx_error.log  warn;

在带有 Homebrew 的 Mac OS X 上,日志文件默认位于以下位置:

/usr/local/var/log/nginx

这可能取决于版本,但我的日志在里面:/opt/nginx/logs/error.log
在 Mac OS X 上使用自制软件:/usr/local/var/log/nginx。见 lfender 的answer
在 ubuntu 上,我在 /var/log/nginx/error.log 中有它。最好检查 nginx.conf 文件并找到 error_log 设置。
P
Peter Mortensen

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

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

/var/log/nginx/error.log

显然,这只能在编译时使用 --error-log-path 编译选项 trac.nginx.org/nginx/ticket/147 进行配置
在覆盆子 pi3 上它的位置
P
Peter Mortensen

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

例子:

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

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

然后使用带有 PID 的 lsof 搜索打开的日志文件:

$ 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 发出相同的命令。

您可以阅读更多内容here


记住这是一个很好的技巧..不要再猜测日志文件可能在哪里
这教会了我如何钓鱼;希望我能投票更多
+1 有关如何查看的答案。我正在寻找来自不同 nginx 安装的日志,但它不在最佳答案中。
您可以在 /proc 文件系统中查看 linux 上的类似数据。 /proc/${pid}/fd 具有指向打开的文件、管道、设备等的符号链接
n
ndmeiri

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

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

l
lfender6445

我的 ngninx 日志位于此处:

/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,日志将在这里。
P
Peter Mortensen

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

P
Peter Mortensen

在终端中输入以下命令:

sudo cat /var/log/nginx/error.log

这不是答案,应该是评论。一旦您有足够的声誉,您就可以发表评论。
M
Mariusz Jamro
cd /var/log/nginx/
cat error.log

m
minglyu

对于 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

a
araldhafeeri

最好在 nginx 配置文件中设置访问日志的位置。使用 accesss_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;
# ...
}

P
Peter Mortensen

我在 /usr/local/nginx/logs/* 中找到了它。


请考虑解释您的代码以及它将如何提供帮助,以便其他人可以从中受益。