I’m using Django with FastCGI + nginx. Where are the logs (errors) stored in this case?
asked Nov 10, 2009 at 7:09
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
answered Nov 10, 2009 at 11:30
syavasyava
5,7681 gold badge16 silver badges2 bronze badges
3
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
answered Sep 1, 2013 at 9:10
BenBen
53.5k48 gold badges176 silver badges224 bronze badges
2
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.
answered Dec 10, 2014 at 16:06
5
Run this command, to check error logs:
tail -f /var/log/nginx/error.log
ndmeiri
4,93812 gold badges35 silver badges44 bronze badges
answered Oct 5, 2015 at 15:37
Taimoor ChangaizTaimoor Changaiz
10k4 gold badges48 silver badges53 bronze badges
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.
answered Dec 10, 2014 at 13:44
lfender6445lfender6445
32.1k11 gold badges117 silver badges98 bronze badges
1
Logs location on Linux servers:
Apache – /var/log/httpd/
IIS – C:inetpubwwwroot
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
answered Sep 6, 2018 at 12:34
Syed ShibliSyed Shibli
9821 gold badge12 silver badges15 bronze badges
Type this command in the terminal:
sudo cat /var/log/nginx/error.log
answered Jan 4, 2018 at 6:05
priyashapriyasha
4675 silver badges4 bronze badges
1
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
answered Jun 26, 2021 at 3:48
minglyuminglyu
2,8352 gold badges12 silver badges31 bronze badges
cd /var/log/nginx/
cat error.log
answered Jun 9, 2015 at 6:12
0
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;
# ...
}
answered Jan 6, 2021 at 11:48
I found it in /usr/local/nginx/logs/*
.
answered Jul 16, 2019 at 11:36
mygeeamygeea
4693 silver badges9 bronze badges
2
Модуль ngx_http_log_module
записывает логи запросов
в указанном формате.
Логи записываются в контексте location’а, где заканчивается обработка.
Это может быть location, отличный от первоначального, если в процессе
обработки запроса происходит
внутреннее
перенаправление.
Пример конфигурации
log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access_log /spool/logs/nginx-access.log compression buffer=32k;
Директивы
Синтаксис: |
access_log access_log
|
---|---|
Умолчание: |
access_log logs/access.log combined; |
Контекст: |
http , server , location , if в location , limit_except
|
Задаёт путь, формат и настройки буферизованной записи в лог.
На одном уровне конфигурации может использоваться несколько логов.
Запись в syslog
настраивается указанием префикса
“syslog:
” в первом параметре.
Специальное значение off
отменяет все директивы
access_log
для текущего уровня.
Если формат не указан, то используется предопределённый формат
“combined
”.
Если задан размер буфера с помощью параметра buffer
или
указан параметр gzip
(1.3.10, 1.2.7), то запись будет
буферизованной.
Размер буфера должен быть не больше размера атомарной записи в дисковый файл.
Для FreeBSD этот размер неограничен.
При включённой буферизации данные записываются в файл:
- если очередная строка лога не помещается в буфер;
-
если данные в буфере находятся дольше интервала времени, заданного
параметромflush
(1.3.10, 1.2.7); -
при переоткрытии лог-файла или
завершении рабочего процесса.
Если задан параметр gzip
, то буфер будет сжиматься перед
записью в файл.
Степень сжатия может быть задана в диапазоне от 1 (быстрее, но хуже сжатие)
до 9 (медленнее, но лучше сжатие).
По умолчанию используются буфер размером 64К байт и степень сжатия 1.
Данные сжимаются атомарными блоками, и в любой момент времени лог-файл может
быть распакован или прочитан с помощью утилиты “zcat
”.
Пример:
access_log /path/to/log.gz combined gzip flush=5m;
Для поддержки gzip-сжатия логов nginx должен быть собран с библиотекой zlib.
В пути файла можно использовать переменные (0.7.6+),
но такие логи имеют некоторые ограничения:
-
пользователь,
с правами которого работают рабочие процессы, должен
иметь права на создание файлов в каталоге с такими логами; - не работает буферизация;
-
файл открывается для каждой записи в лог и сразу же после записи закрывается.
Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов
могут храниться в кэше,
то при вращении логов в течение времени, заданного параметром
valid
директивы open_log_file_cache,
запись может продолжаться в старый файл. -
при каждой записи в лог проверяется существование
корневого каталога
для запроса — если этот каталог не существует, то лог не создаётся.
Поэтому root
иaccess_log
нужно описывать на одном уровне конфигурации:server { root /spool/vhost/data/$host; access_log /spool/vhost/logs/$host; ...
Параметр if
(1.7.0) включает условную запись в лог.
Запрос не будет записываться в лог, если результатом вычисления
условия
является “0” или пустая строка.
В следующем примере запросы с кодами ответа 2xx и 3xx
не будут записываться в лог:
map $status $loggable { ~^[23] 0; default 1; } access_log /path/to/access.log combined if=$loggable;
Синтаксис: |
log_format
|
---|---|
Умолчание: |
log_format combined "..."; |
Контекст: |
http
|
Задаёт формат лога.
Параметр escape
(1.11.8) позволяет задать
экранирование символов json
или default
в переменных, по умолчанию используется default
.
Значение none
(1.13.10) отключает
экранирование символов.
При использовании default
символы “"
”, “”,
a также символы со значениями меньше 32 (0.7.0) или больше 126 (1.1.6)
экранируются как “xXX
”.
Если значение переменной не найдено,
то в качестве значения в лог будет записываться дефис (“-
”).
При использовании json
экранируются все символы, недопустимые
в JSON строках:
символы “"
” и
“” экранируются как
“"
” и “\
”,
символы со значениями меньше 32 экранируются как
“n
”,
“r
”,
“t
”,
“b
”,
“f
” или
“u00XX
”.
Кроме общих переменных в формате можно использовать переменные,
существующие только на момент записи в лог:
$bytes_sent
- число байт, переданное клиенту
$connection
- порядковый номер соединения
$connection_requests
- текущее число запросов в соединении (1.1.18)
$msec
- время в секундах с точностью до миллисекунд на момент записи в лог
$pipe
-
“
p
” если запрос был pipelined, иначе “.
” $request_length
- длина запроса (включая строку запроса, заголовок и тело запроса)
$request_time
-
время обработки запроса в секундах с точностью до миллисекунд;
время, прошедшее с момента чтения первых байт от клиента до
момента записи в лог после отправки последних байт клиенту $status
- статус ответа
$time_iso8601
- локальное время в формате по стандарту ISO 8601
$time_local
- локальное время в Common Log Format
В современных версиях nginx переменные
$status
(1.3.2, 1.2.2),
$bytes_sent
(1.3.8, 1.2.5),
$connection
(1.3.8, 1.2.5),
$connection_requests
(1.3.8, 1.2.5),
$msec
(1.3.9, 1.2.6),
$request_time
(1.3.9, 1.2.6),
$pipe
(1.3.12, 1.2.7),
$request_length
(1.3.12, 1.2.7),
$time_iso8601
(1.3.12, 1.2.7)
и
$time_local
(1.3.12, 1.2.7)
также доступны как общие переменные.
Строки заголовка, переданные клиенту, начинаются с префикса
“sent_http_
”, например,
$sent_http_content_range
.
В конфигурации всегда существует предопределённый формат
“combined
”:
log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
Синтаксис: |
open_log_file_cache open_log_file_cache
|
---|---|
Умолчание: |
open_log_file_cache off; |
Контекст: |
http , server , location
|
Задаёт кэш, в котором хранятся дескрипторы файлов часто используемых
логов, имена которых заданы с использованием переменных.
Параметры директивы:
max
-
задаёт максимальное число дескрипторов в кэше;
при переполнении кэша наименее востребованные (LRU)
дескрипторы закрываются inactive
-
задаёт время, после которого закэшированный дескриптор закрывается,
если к нему не было обращений в течение этого времени;
по умолчанию 10 секунд min_uses
-
задаёт минимальное число использований файла в течение
времени, заданного параметромinactive
,
после которого дескриптор файла будет оставаться открытым в кэше;
по умолчанию 1 valid
-
задаёт, через какое время нужно проверять, что файл ещё
существует под тем же именем;
по умолчанию 60 секунд off
- запрещает кэш
Пример использования:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
I’m using Django with FastCGI + nginx. Where are the logs (errors) stored in this case?
asked Nov 10, 2009 at 7:09
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
answered Nov 10, 2009 at 11:30
syavasyava
5,7681 gold badge16 silver badges2 bronze badges
3
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
answered Sep 1, 2013 at 9:10
BenBen
53.5k48 gold badges176 silver badges224 bronze badges
2
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.
answered Dec 10, 2014 at 16:06
5
Run this command, to check error logs:
tail -f /var/log/nginx/error.log
ndmeiri
4,93812 gold badges35 silver badges44 bronze badges
answered Oct 5, 2015 at 15:37
Taimoor ChangaizTaimoor Changaiz
10k4 gold badges48 silver badges53 bronze badges
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.
answered Dec 10, 2014 at 13:44
lfender6445lfender6445
32.1k11 gold badges117 silver badges98 bronze badges
1
Logs location on Linux servers:
Apache – /var/log/httpd/
IIS – C:inetpubwwwroot
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
answered Sep 6, 2018 at 12:34
Syed ShibliSyed Shibli
9821 gold badge12 silver badges15 bronze badges
Type this command in the terminal:
sudo cat /var/log/nginx/error.log
answered Jan 4, 2018 at 6:05
priyashapriyasha
4675 silver badges4 bronze badges
1
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
answered Jun 26, 2021 at 3:48
minglyuminglyu
2,8352 gold badges12 silver badges31 bronze badges
cd /var/log/nginx/
cat error.log
answered Jun 9, 2015 at 6:12
0
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;
# ...
}
answered Jan 6, 2021 at 11:48
I found it in /usr/local/nginx/logs/*
.
answered Jul 16, 2019 at 11:36
mygeeamygeea
4693 silver badges9 bronze badges
2