我使用Django与FastCGI + nginx。在这种情况下,日志(错误)存储在哪里?
错误存储在nginx日志文件中。你可以在nginx配置文件的根目录中指定:
error_log /var/log/nginx/nginx_error.log warn;
在带Homebrew的Mac OS X上,默认情况下在以下位置找到日志文件:
/usr/local/var/log/nginx
我在寻找另一种解决方案。
错误日志,默认情况下,在任何配置设置之前,在我的系统(x86 Arch Linux)上,在:
/var/log/nginx/error.log
我的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命令来定位你所选择的文件。
找到/usr/ -path "*/nginx/*" -type f -name '*.log',其中/usr/是你想要开始搜索的文件夹。
在大多数情况下,可以使用lsof(打开文件列表)在不知道配置的情况下找到打开的日志文件。
例子:
找到httpd的PID(同样的概念适用于nginx和其他程序):
$ ps aux | grep httpd
...
root 17970 0.0 0.3 495964 64388 ? Ssl Oct29 3:45 /usr/sbin/httpd
...
然后使用lsof和PID搜索打开的日志文件:
$ 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发出相同的命令。
你可以在这里读到更多。
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
在nginx配置文件中设置访问日志的位置是一个很好的实践。使用acces_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;
# ...
}
对于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
推荐文章
- django MultiValueDictKeyError错误,我如何处理它
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块
- Django - makemigrations -未检测到任何更改
- ">", "<", ">=" 和“< =”不工作”在Django过滤()”
- Django项目工作目录结构的最佳实践
- 如何在Django中表达一对多关系?
- 用Django创建电子邮件模板
- Nginx - client_max_body_size没有效果
- 如何在NGINX配置中对两个位置有相同的规则?
- Django的嵌套元类是如何工作的?
- 用Django实现OpenID的最佳解决方案是什么?
- 在使用信号时,你不能在'原子'块的末尾执行查询,但只能在单元测试期间执行
- Django查询- id vs pk
- render(), render_to_response()和direct_to_template()之间有什么区别?