В nginx два файла логов: access_log и error_log. Лог access_log записывает данные о запросах пользователей. Лог error_log записывает данные об ошибках.
Настройка лога ошибок error_log
По умолчанию файл лога пишется в «logs/error» (абсолютный путь зависит от операционной системы и каталога установки), в который попадают все ошибки со всеми уровнями логирования. Следующей командой можно поменять уровень логирования на warn:
1 |
error_log logs/error.log warn; |
Эта строка может быть написана в секциях http, stream, server или location, и она переопределяет настройку вышестоящих секций.
Если возникает ошибка, то она записывается в файл лога, который определён в наиболее близкой секции. Если в секции определено несколько error_log, то ошибка записывается в оба файла.
Настройка лога доступа access_log
Nginx пишет информацию о клиентских запросах в лог сразу после их обработки. По умолчанию лог доступа пишется в файл «logs/access.log». Эта строка может быть описана в http, stream, server или location секциях, так же как и error_log. Вы можете определить другой файл для записи логов доступа:
1 |
access_log /myfolder/myaccess.log |
Можно также использовать log_format для определения формата записи в лог доступа. Пример:
1 2 3 4 5 6 7 8 9 10 11 |
http { log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; server { gzip on; access_log /spool/logs/nginx-access.log compression; ... } } |
Здесь compression включает сжатие gzip со степенью сжатия $gzip_ratio. Остальные переменные обозначают соответствующую информацию о запросе клиента, который логируется.
Особенность
Собственно для чего я написал эту статью.
По неподтверждённой информации при описании access_log и error_log в файлах, которые подключаются через include, они действуют только внутри подключаемого файла.
Например, «file1.conf»:
1 2 3 4 5 |
error_log /mydirectory/myerror.log error; access_log /mydirectory/myerror.log; location .... и другие настройки в файле |
Основной «nginx.conf»:
1 2 3 4 5 6 7 8 9 |
http { ... include file1.conf; include file2.conf; include file3.conf; .... } |
В такой конфигурации access_log и error_log, описанные в «file1.conf», действуют только внутри «file1.conf», а в файлах «file2.conf», «file3.conf» можно описать другие access_log и error_log для location-ов, которые описаны в них («file2.conf», «file3.conf»).