Персональный
сайт
Игоря
Сысоева


 
english
 
sysoev.ru
 
nginx
 поехали!    
 документация    
 поддержка    
 изменения    
 скачать    
 ссылки    
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
обо мне
для писем
для денег
 

Директивы модуля ngx_http_log_module

 

07.07.2008

Модуль ngx_http_log_module записывает логи запросов в указанном формате.

Содержание

Пример конфигурации
Директивы
access_log
log_format
open_log_file_cache

Пример конфигурации

    log_format  gzip  '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $bytes_sent '
                      '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    access_log  /spool/logs/nginx-access.log  gzip  buffer=32k;

Директивы


syntax: access_log путь [формат [buffer=размер]]|off
default: access_log log/access.log combined
context: http, server, location, if в location, limit_except

Директива access_log задаёт путь, формат и размер буфера для буферизированной записи в лог. На одном уровне может использоваться несколько логов. Параметр "off" отменяет все директивы access_log для текущего уровня. Если формат не указан, то используется предопределённый формат "combined".

Размер буфера должен быть не больше размера атомарной записи в дисковый файл. Для FreeBSD 3.0-6.0 этот размер неограничен.

В пути файла можно использовать переменные (0.7.6+), но такие логи имеют некоторые ограничения:

  • пользователь, с правами которого работают рабочие процессы, должен иметь права на создание файлов в каталоге с такими логами;
  • не работает буферизация;
  • файл открывается для каждой записи в лог и сразу же после записи закрывается. Но дескрипторы часто используемых файлов могут храниться в open_log_file_cache. При вращении логов нужно иметь в виду, что в течение времени, заданного параметром valid директивы open_log_file_cache, запись может продолжаться в старый файл.
  • при каждой записи в лог проверяется существование каталога root'а для запроса — если этот каталог не существует, то лог не создаётся. Поэтому root и access_log нужно описывать на одном уровне:
    server {
        root        /spool/vhost/data/$host;
        access_log  /spool/vhost/logs/$host;
        ...
    


syntax: log_format название строка [строка ...]
default: log_format combined "..."
context: http

Директива log_format описывает формат лога.

Кроме общих переменных в формате можно использовать переменные, существующие только на момент записи в лог:

  • $body_bytes_sent, число байт, переданное клиенту за вычетом заголовка ответа, переменная совместима с параметром %B модуля Apache mod_log_config;
  • $bytes_sent, число байт, переданное клиенту;
  • $connection, номер соединения;
  • $msec, время в секундах с точностью до миллисекунд на момент записи в лог;
  • $pipe, "p" если запрос был pipelined;
  • $request_length, длина тела запроса;
  • $request_time, время обработки запроса в секундах с точностью до миллисекунд;
  • $status, статус ответа;
  • $time_local, локальное время в common log format.

Строки заголовка, переданные клиенту, начинаются с префикса "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"';


syntax: open_log_file_cache max=N [inactive=время]|off
default: open_log_file_cache off
context: http, server, location

Директива задаёт кэш, в котором хранятся дескрипторы файлов часто используемых логов, имена которых заданы переменными.

Параметры директивы:

  • max — задаёт маскимальное число дескрипторов в кэше; при переполнении кэша наиболее давно не используемые дескрипторы закрываются (LRU);
  • inactive — задаёт время, после которого дескриптор кэша закрывается, если к нему не было обращений в течение этого времени; по умолчанию 10 секунд;
  • min_uses — задаёт минимальное число использований файла в течение времени, заданного параметром inactive в директиве open_log_file_cache, после которого дескриптор файла будет оставаться окрытым в кэше; по умолчанию 1 использование;
  • valid — задаёт, через какое время нужно проверять, что файл ещё существует под тем же именем; по умолчанию 60 секунд;
  • off — запрещает кэш.

Пример использования:

open_log_file_cache      max=1000  inactive=20s  valid=1m  min_uses=2;


(C) Игорь Сысоев
http://sysoev.ru