Логи error_log и access_log в Nginx

Файлы логов — первое место, где нужно искать ошибки. Особенно если это касается веб-сервера. В Nginx всего два основных лога: error_log и access_log.

Лог ошибок error_log

Логирование ошибок Nginx происходит в определенный файл, stderr или syslog. Он собирает все ошибки, которые произошли во время работы веб-сервера. По умолчанию он включен глобально:

error_log logs/error.log error;

# Записываются только ошибки в файл по указанному пути

Для сбора только определенных ошибок необходимо разместить директиву в секции http, server, stream или location. А так можно логировать только критические ошибки и сигналы тревоги:

error_log logs/error.log warn;

# Записываются ошибки уровня warn, error crit, alert, emerg

Лог доступа access_log

Лог доступа Nginx по умолчанию размещен в директории logs/access.log. В него записываются данные о запросах пользователей, как только эти запросы обработаны. Для изменения директории расположения лога используется директива access_log:

access_log logs/access.log combined;

# Используется комбинированный формат

В расширенном виде access_log можно настроить по своим требованиям:

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;
        ...
    }
}

# Задается пользовательский формат с записью времени подключения, TTFB, TTLB, времени обработки запроса

Также можно исключить ненужную информацию из лога:

map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;

# Исключает запросы к HTTP со статусом 2ХХ (успешно) и 3ХХ (редирект)

Запись в syslog

Стандартная для UNIX-систем утилита syslog может собирать логи и различные сообщения разных процессов на одном сервере:

access_log syslog:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info;

# Перенаправляет информацию в syslog

Директива server указывает адрес сервера (здесь IPv6) и порт. А facility — специфические параметры программы: auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog,user, uucp, local0 ... local7.

Включение режима debug

При необходимости можно включить Nginx debug-режим записи логов, который обеспечивает расширенную информацию и полезен при решении серьезных проблем:

error_log logs/error.log debug;

# Можно включить только для нужной секции или отдельных клиентов соединений


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень