Log#
Модуль записывает логи запросов в указанном формате. По умолчанию stream, server Задает путь, формат и настройки буферизованной записи в лог. На одном уровне конфигурации может использоваться несколько логов. Запись в syslog настраивается указанием префикса "syslog:" в первом параметре. Специальное значение off отменяет все директивы access_log для текущего уровня. Если задан размер буфера с помощью параметра buffer или указан параметр gzip, то запись будет буферизованной. Осторожно Размер буфера должен быть не больше размера атомарной записи в дисковый файл. Для FreeBSD этот размер неограничен. При включенной буферизации данные записываются в файл: если очередная строка лога не помещается в буфер; если данные в буфере находятся дольше интервала времени, заданного параметром flush; при переоткрытии лог-файла или завершении рабочего процесса. Если задан параметр gzip, то буфер будет сжиматься перед записью в файл. Степень сжатия может быть задана в диапазоне от 1 (быстрее, но хуже сжатие) до 9 (медленнее, но лучше сжатие). По умолчанию используются буфер размером 64К байт и степень сжатия 1. Данные сжимаются атомарными блоками, и в любой момент времени лог-файл может быть распакован или прочитан с помощью утилиты "zcat". Пример: Важно Для поддержки gzip-сжатия логов Angie должен быть собран с библиотекой zlib. В пути файла можно использовать переменные, но такие логи имеют некоторые ограничения: пользователь, с правами которого работают рабочие процессы, должен иметь права на создание файлов в каталоге с такими логами; не работает буферизация; файл открывается для каждой записи в лог и сразу же после записи закрывается. Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов могут храниться в кэше, то при ротации логов в течение времени, заданного параметром valid директивы open_log_file_cache, запись может продолжаться в старый файл. Параметр if включает условную запись в лог. Сессия не будет записываться в лог, если результатом вычисления условия является "0" или пустая строка. Задает формат лога, например: Параметр escape позволяет задать экранирование символов json или default в переменных, по умолчанию используется default. Значение none отключает экранирование символов. При использовании default символы """, "\", a также символы со значениями меньше 32 или больше 126 экранируются как "\xXX". Если значение переменной не найдено, то в качестве значения в лог будет записываться дефис "-". При использовании json экранируются все символы, недопустимые в JSON строках: символы """ и "\" экранируются как "\"" и "\\", символы со значениями меньше 32 экранируются как "\n", "\r", "\t", "\b", "\f" или "\u00XX". По умолчанию http, server, location Задает кэш, в котором хранятся дескрипторы файлов часто используемых логов, имена которых заданы с использованием переменных. Параметры: задает максимальное число дескрипторов в кэше; при переполнении кэша наименее востребованные (LRU) дескрипторы закрываются задает время, после которого кэшированный дескриптор закрывается, если к нему не было обращений в течение этого времени; задает минимальное число использований файла в течение времени, заданного параметром inactive, после которого дескриптор файла будет оставаться открытым в кэше; задает, через какое время нужно проверять, что файл еще существует под тем же именем; запрещает кэш Пример использования:Пример конфигурации#
log_format basic '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time';
access_log /spool/logs/angie-access.log basic buffer=32k;
Директивы#
access_log#
access_log
путь [формат [buffer=
размер] [gzip[=степень]] [flush=
время] [if=
условие]];access_log
off
;access_log off;
access_log /path/to/log.gz basic gzip flush=5m;
log_format#
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
open_log_file_cache#
open_log_file_cache
max=
N [inactive=
время] [min_uses=
N] [valid=
время];open_log_file_cache off;
max
inactive
по умолчанию 10 секундmin_uses
по умолчанию 1valid
по умолчанию 60 секундoff
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;