Модуль ngx_stream_log_module
Модуль 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
path
format
[buffer=size]
[gzip[=level]]
[flush=time]
[if=condition];access_log off; |
|---|---|
| По умолчанию: | 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.
Путь к файлу может содержать переменные, но такие логи имеют некоторые ограничения:
- пользователь, чьи учетные данные используются процессами-работниками, должен иметь права на создание файлов в каталоге с такими логами;
- буферизованные записи не работают;
- файл открывается и закрывается для каждой записи лога. Однако, поскольку дескрипторы часто используемых файлов могут храниться в кэше cache, запись в старый файл может продолжаться в течение времени, указанного параметром open_log_file_cache —
valid
Параметр if включает условную запись в лог. Сессия не будет записана в лог, если значение condition равно «0» или пустой строке.
| Синтаксис: | log_format
name
[escape=default|json|none]
string ...; |
|---|---|
| По умолчанию: | — |
| Контекст: | 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 символы «"», «\» и другие символы со значениями меньше 32 или больше 126 экранируются как «\xXX». Если значение переменной не найдено, будет записан дефис («-»).
Для экранирования json все символы, запрещенные в JSON строках, будут экранированы: символы «"» и «\» экранируются как «\"» и «\\», символы со значениями меньше 32 экранируются как «\n», «\r», «\t», «\b», «\f» или «\u00XX».
| Синтаксис: | open_log_file_cache
max=N
[inactive=time]
[min_uses=N]
[valid=time];open_log_file_cache off; |
|---|---|
| По умолчанию: | 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;
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_log_module.html