Модуль ngx_stream_log_module
Пример конфигурации Директивы access_log log_format open_log_file_cache |
Модуль ngx_stream_log_module
(1.11.4) записывает логи сессий
в указанном формате.
Пример конфигурации
log_format basic '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time'; access_log /spool/logs/nginx-access.log basic buffer=32k;
Директивы
Синтаксис: |
access_log
access_log |
---|---|
Умолчание: |
access_log off; |
Контекст: |
stream , server |
Задаёт путь, формат
и настройки буферизованной записи в лог.
На одном уровне конфигурации может использоваться несколько логов.
Запись в syslog
настраивается указанием префикса
“syslog:
” в первом параметре.
Специальное значение off
отменяет все директивы
access_log
для текущего уровня.
Если задан размер буфера с помощью параметра buffer
или
указан параметр gzip
, то запись будет
буферизованной.
Размер буфера должен быть не больше размера атомарной записи в дисковый файл. Для FreeBSD этот размер неограничен.
При включённой буферизации данные записываются в файл:
- если очередная строка лога не помещается в буфер;
-
если данные в буфере находятся дольше интервала времени, заданного
параметром
flush
; - при переоткрытии лог-файла или завершении рабочего процесса.
Если задан параметр gzip
, то буфер будет сжиматься перед
записью в файл.
Степень сжатия может быть задана в диапазоне от 1 (быстрее, но хуже сжатие)
до 9 (медленнее, но лучше сжатие).
По умолчанию используются буфер размером 64К байт и степень сжатия 1.
Данные сжимаются атомарными блоками, и в любой момент времени лог-файл может
быть распакован или прочитан с помощью утилиты “zcat
”.
Пример:
access_log /path/to/log.gz basic gzip flush=5m;
Для поддержки gzip-сжатия логов nginx должен быть собран с библиотекой zlib.
В пути файла можно использовать переменные, но такие логи имеют некоторые ограничения:
- пользователь, с правами которого работают рабочие процессы, должен иметь права на создание файлов в каталоге с такими логами;
- не работает буферизация;
-
файл открывается для каждой записи в лог и сразу же после записи закрывается.
Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов
могут храниться в кэше,
то при вращении логов в течение времени, заданного параметром
valid
директивы open_log_file_cache, запись может продолжаться в старый файл.
Параметр if
включает условную запись в лог.
Сессия не будет записываться в лог, если результатом вычисления
условия
является “0” или пустая строка.
Синтаксис: |
log_format
|
---|---|
Умолчание: | — |
Контекст: |
stream |
Задаёт формат лога, например:
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"';
Параметр escape
(1.11.8) позволяет задать
экранирование символов json
или default
в переменных, по умолчанию используется default
.
Параметр none
(1.13.10) отключает
экранирование символов.
При использовании default
символы “"
”, “\
”,
a также символы со значениями меньше 32 или больше 126
экранируются как “\xXX
”.
Если значение переменной не найдено,
то в качестве значения в лог будет записываться дефис (“-
”).
При использовании json
экранируются все символы, недопустимые
в JSON строках:
символы “"
” и
“\
” экранируются как
“\"
” и “\\
”,
символы со значениями меньше 32 экранируются как
“\n
”,
“\r
”,
“\t
”,
“\b
”,
“\f
” или
“\u00XX
”.
Синтаксис: |
open_log_file_cache
open_log_file_cache |
---|---|
Умолчание: |
open_log_file_cache off; |
Контекст: |
stream , server |
Задаёт кэш, в котором хранятся дескрипторы файлов часто используемых логов, имена которых заданы с использованием переменных. Параметры директивы:
max
- задаёт максимальное число дескрипторов в кэше; при переполнении кэша наименее востребованные (LRU) дескрипторы закрываются
inactive
- задаёт время, после которого закэшированный дескриптор закрывается, если к нему не было обращений в течение этого времени; по умолчанию 10 секунд
min_uses
-
задаёт минимальное число использований файла в течение
времени, заданного параметром
inactive
, после которого дескриптор файла будет оставаться открытым в кэше; по умолчанию 1 valid
- задаёт, через какое время нужно проверять, что файл ещё существует под тем же именем; по умолчанию 60 секунд
off
- запрещает кэш
Пример использования:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;