Where can I find the error logs of nginx, using FastCGI and Django?
Asked Answered
N

10

458

I'm using Django with FastCGI + nginx. Where are the logs (errors) stored in this case?

Namhoi answered 10/11, 2009 at 7:9 Comment(0)
N
585

Errors are stored in the nginx log file. You can specify it in the root of the nginx configuration file:

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

On Mac OS X with Homebrew, the log file was found by default at the following location:

/usr/local/var/log/nginx
Niemann answered 10/11, 2009 at 11:30 Comment(4)
That's maybe version dependent but my log is inside: /opt/nginx/logs/error.logZurkow
on Mac OS X with homebrew: /usr/local/var/log/nginx. see lfender's answerNorty
On ubuntu I have it in /var/log/nginx/error.log. It is best to check the nginx.conf file and find the error_log setting.Foveola
Found mine at /opt/homebrew/var/log/nginx/error.log lol. Currently on macOS 13 (Ventura). Also seems you could run nginx -h to view the default log output directory.Advice
D
344

I was looking for a different solution.

Error logs, by default, before any configuration is set, on my system (x86 Arch Linux), was found in:

/var/log/nginx/error.log
Daggett answered 1/9, 2013 at 9:10 Comment(2)
Apparently this is configureable only at compile time with the --error-log-path compile option trac.nginx.org/nginx/ticket/147Dettmer
on raspberry pi3 its the locationCapreolate
J
204

You can use lsof (list of open files) in most cases to find open log files without knowing the configuration.

Example:

Find the PID of httpd (the same concept applies for nginx and other programs):

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

Then search for open log files using lsof with the 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

If lsof prints nothing, even though you expected the log files to be found, issue the same command using sudo.

You can read a little more here.

Jacobian answered 10/12, 2014 at 16:6 Comment(5)
it's a nice trick to remember.. no guessing any more where the log files could beJori
this taught me how to fish; wish I could upvote moreEvanish
+1 For an answer on how to look. I was looking for logs from a different installation of nginx and it wasn't in the top answer.Usurious
you can poke at similar data on linux in the /proc filesystem. /proc/${pid}/fd has symlinks to the open files, pipes, devices, etcAltonaltona
while using [$ ps aux | grep httpd] I got =auto httpd (in red). do you know what it means please?Spurge
F
123

Run this command, to check error logs:

tail -f /var/log/nginx/error.log
Flashover answered 5/10, 2015 at 15:37 Comment(0)
C
44

My ngninx logs are located here:

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

You can also check your nginx.conf to see if you have any directives dumping to custom log.

run nginx -t to locate your 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 is usually set up in /usr/local or /etc/. The server could be configured to dump logs to /var/log as well.

If you have an alternate location for your nginx install and all else fails, you could use the find command to locate your file of choice.

find /usr/ -path "*/nginx/*" -type f -name '*.log', where /usr/ is the folder you wish to start searching from.

Civilized answered 10/12, 2014 at 13:44 Comment(1)
The logs will be here if you installed Nginx with Homebrew.Kor
S
25

Logs location on Linux servers:

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
Shivery answered 6/9, 2018 at 12:34 Comment(0)
V
12

For Mac OS users, you can type nginx -help in your terminal.

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

Then, you could find some default path for configuration and log files, in this case:

/opt/homebrew/log/nginx/error.log
Voluminous answered 26/6, 2021 at 3:48 Comment(1)
why is this different for different users? For me it is in opt/homebrew/var/log/nginx/error.log. Doesnt make any senseCelinacelinda
D
11

Type this command in the terminal:

sudo cat /var/log/nginx/error.log
Dorella answered 4/1, 2018 at 6:5 Comment(1)
That is not an answer and should be a comment instead. Once you have sufficient reputation you will be able to comment.Andrade
I
4
cd /var/log/nginx/
cat error.log
Interchangeable answered 9/6, 2015 at 6:12 Comment(0)
U
1

It is a good practice to set where the access log should be in nginx configuring file . Using acces_log /path/ Like this.

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;
# ...
}
Uncial answered 6/1, 2021 at 11:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.