Директивы модуля 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 |