Spec-Zone.ru › nginx

Модуль 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 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API