Path: blob/main/xml/ru/docs/stream/ngx_stream_log_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Nginx, Inc.4-->56<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">78<module name="Модуль ngx_stream_log_module"9link="/ru/docs/stream/ngx_stream_log_module.html"10lang="ru"11rev="8">1213<section id="summary">1415<para>16Модуль <literal>ngx_stream_log_module</literal> (1.11.4) записывает логи сессий17в указанном формате.18</para>1920</section>212223<section id="example" name="Пример конфигурации">2425<para>26<example>27log_format basic '$remote_addr [$time_local] '28'$protocol $status $bytes_sent $bytes_received '29'$session_time';3031access_log /spool/logs/nginx-access.log basic buffer=32k;32</example>33</para>3435</section>363738<section id="directives" name="Директивы">3940<directive name="access_log">41<syntax>42<value>путь</value>43<value>формат</value>44[<literal>buffer</literal>=<value>размер</value>]45[<literal>gzip[=<value>степень</value>]</literal>]46[<literal>flush</literal>=<value>время</value>]47[<literal>if</literal>=<value>условие</value>]</syntax>48<syntax><literal>off</literal></syntax>49<default>off</default>50<context>stream</context>51<context>server</context>5253<para>54Задаёт путь, <link id="log_format">формат</link>55и настройки буферизованной записи в лог.56На одном уровне конфигурации может использоваться несколько логов.57Запись в <link doc="../syslog.xml">syslog</link>58настраивается указанием префикса59“<literal>syslog:</literal>” в первом параметре.60Специальное значение <literal>off</literal> отменяет все директивы61<literal>access_log</literal> для текущего уровня.62</para>6364<para>65Если задан размер буфера с помощью параметра <literal>buffer</literal> или66указан параметр <literal>gzip</literal>, то запись будет67буферизованной.68<note>69Размер буфера должен быть не больше размера атомарной записи в дисковый файл.70Для FreeBSD этот размер неограничен.71</note>72</para>7374<para>75При включённой буферизации данные записываются в файл:76<list type="bullet">7778<listitem>79если очередная строка лога не помещается в буфер;80</listitem>8182<listitem>83если данные в буфере находятся дольше интервала времени, заданного84параметром <literal>flush</literal>;85</listitem>8687<listitem>88при <link doc="../control.xml">переоткрытии</link> лог-файла или89завершении рабочего процесса.90</listitem>9192</list>93</para>9495<para>96Если задан параметр <literal>gzip</literal>, то буфер будет сжиматься перед97записью в файл.98Степень сжатия может быть задана в диапазоне от 1 (быстрее, но хуже сжатие)99до 9 (медленнее, но лучше сжатие).100По умолчанию используются буфер размером 64К байт и степень сжатия 1.101Данные сжимаются атомарными блоками, и в любой момент времени лог-файл может102быть распакован или прочитан с помощью утилиты “<literal>zcat</literal>”.103</para>104105<para>106Пример:107<example>108access_log /path/to/log.gz basic gzip flush=5m;109</example>110</para>111112<para>113<note>114Для поддержки gzip-сжатия логов nginx должен быть собран с библиотекой zlib.115</note>116</para>117118<para>119В пути файла можно использовать переменные,120но такие логи имеют некоторые ограничения:121<list type="bullet">122123<listitem>124<link doc="../ngx_core_module.xml" id="user">пользователь</link>,125с правами которого работают рабочие процессы, должен126иметь права на создание файлов в каталоге с такими логами;127</listitem>128129<listitem>130не работает буферизация;131</listitem>132133<listitem>134файл открывается для каждой записи в лог и сразу же после записи закрывается.135Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов136могут храниться в <link id="open_log_file_cache">кэше</link>,137то при вращении логов в течение времени, заданного параметром138<literal>valid</literal> директивы <link id="open_log_file_cache"/>,139запись может продолжаться в старый файл.140</listitem>141142</list>143</para>144145<para>146Параметр <literal>if</literal> включает условную запись в лог.147Сессия не будет записываться в лог, если результатом вычисления148<value>условия</value> является “0” или пустая строка.149</para>150151</directive>152153154<directive name="log_format">155<syntax>156<value>название</value>157[<literal>escape</literal>=<literal>default</literal>|<literal>json</literal>|<literal>none</literal>]158<value>строка</value> ...</syntax>159<default></default>160<context>stream</context>161162<para>163Задаёт формат лога, например:164<example>165log_format proxy '$remote_addr [$time_local] '166'$protocol $status $bytes_sent $bytes_received '167'$session_time "$upstream_addr" '168'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';169</example>170</para>171172<para id="log_format_escape">173Параметр <literal>escape</literal> (1.11.8) позволяет задать174экранирование символов <literal>json</literal> или <literal>default</literal>175в переменных, по умолчанию используется <literal>default</literal>.176Параметр <literal>none</literal> (1.13.10) отключает177экранирование символов.178</para>179180<para id="log_format_escape_default">181При использовании <literal>default</literal>182символы “<literal>"</literal>”, “<literal>\</literal>”,183a также символы со значениями меньше 32 или больше 126184экранируются как “<literal>\xXX</literal>”.185Если значение переменной не найдено,186то в качестве значения в лог будет записываться дефис (“<literal>-</literal>”).187</para>188189<para id="log_format_escape_json">190При использовании <literal>json</literal>191экранируются все символы, недопустимые192в JSON <link url="https://datatracker.ietf.org/doc/html/rfc8259#section-7">строках</link>:193символы “<literal>"</literal>” и194“<literal>\</literal>” экранируются как195“<literal>\"</literal>” и “<literal>\\</literal>”,196символы со значениями меньше 32 экранируются как197“<literal>\n</literal>”,198“<literal>\r</literal>”,199“<literal>\t</literal>”,200“<literal>\b</literal>”,201“<literal>\f</literal>” или202“<literal>\u00XX</literal>”.203</para>204205</directive>206207208<directive name="open_log_file_cache">209210<syntax>211<literal>max</literal>=<value>N</value>212[<literal>inactive</literal>=<value>время</value>]213[<literal>min_uses</literal>=<value>N</value>]214[<literal>valid</literal>=<value>время</value>]</syntax>215<syntax><literal>off</literal></syntax>216<default>off</default>217<context>stream</context>218<context>server</context>219220<para>221Задаёт кэш, в котором хранятся дескрипторы файлов часто используемых222логов, имена которых заданы с использованием переменных.223Параметры директивы:224<list type="tag">225226<tag-name><literal>max</literal></tag-name>227<tag-desc>228задаёт максимальное число дескрипторов в кэше;229при переполнении кэша наименее востребованные (LRU)230дескрипторы закрываются231</tag-desc>232233<tag-name><literal>inactive</literal></tag-name>234<tag-desc>235задаёт время, после которого закэшированный дескриптор закрывается,236если к нему не было обращений в течение этого времени;237по умолчанию 10 секунд238</tag-desc>239240<tag-name><literal>min_uses</literal></tag-name>241<tag-desc>242задаёт минимальное число использований файла в течение243времени, заданного параметром <literal>inactive</literal>,244после которого дескриптор файла будет оставаться открытым в кэше;245по умолчанию 1246</tag-desc>247248<tag-name><literal>valid</literal></tag-name>249<tag-desc>250задаёт, через какое время нужно проверять, что файл ещё251существует под тем же именем;252по умолчанию 60 секунд253</tag-desc>254255<tag-name><literal>off</literal></tag-name>256<tag-desc>257запрещает кэш258</tag-desc>259260</list>261</para>262263<para>264Пример использования:265<example>266open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;267</example>268</para>269270</directive>271272</section>273274</module>275276277