Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/stream/ngx_stream_log_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Nginx, Inc.
5
-->
6
7
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9
<module name="Модуль ngx_stream_log_module"
10
link="/ru/docs/stream/ngx_stream_log_module.html"
11
lang="ru"
12
rev="8">
13
14
<section id="summary">
15
16
<para>
17
Модуль <literal>ngx_stream_log_module</literal> (1.11.4) записывает логи сессий
18
в указанном формате.
19
</para>
20
21
</section>
22
23
24
<section id="example" name="Пример конфигурации">
25
26
<para>
27
<example>
28
log_format basic '$remote_addr [$time_local] '
29
'$protocol $status $bytes_sent $bytes_received '
30
'$session_time';
31
32
access_log /spool/logs/nginx-access.log basic buffer=32k;
33
</example>
34
</para>
35
36
</section>
37
38
39
<section id="directives" name="Директивы">
40
41
<directive name="access_log">
42
<syntax>
43
<value>путь</value>
44
<value>формат</value>
45
[<literal>buffer</literal>=<value>размер</value>]
46
[<literal>gzip[=<value>степень</value>]</literal>]
47
[<literal>flush</literal>=<value>время</value>]
48
[<literal>if</literal>=<value>условие</value>]</syntax>
49
<syntax><literal>off</literal></syntax>
50
<default>off</default>
51
<context>stream</context>
52
<context>server</context>
53
54
<para>
55
Задаёт путь, <link id="log_format">формат</link>
56
и настройки буферизованной записи в лог.
57
На одном уровне конфигурации может использоваться несколько логов.
58
Запись в <link doc="../syslog.xml">syslog</link>
59
настраивается указанием префикса
60
<literal>syslog:</literal>” в первом параметре.
61
Специальное значение <literal>off</literal> отменяет все директивы
62
<literal>access_log</literal> для текущего уровня.
63
</para>
64
65
<para>
66
Если задан размер буфера с помощью параметра <literal>buffer</literal> или
67
указан параметр <literal>gzip</literal>, то запись будет
68
буферизованной.
69
<note>
70
Размер буфера должен быть не больше размера атомарной записи в дисковый файл.
71
Для FreeBSD этот размер неограничен.
72
</note>
73
</para>
74
75
<para>
76
При включённой буферизации данные записываются в файл:
77
<list type="bullet">
78
79
<listitem>
80
если очередная строка лога не помещается в буфер;
81
</listitem>
82
83
<listitem>
84
если данные в буфере находятся дольше интервала времени, заданного
85
параметром <literal>flush</literal>;
86
</listitem>
87
88
<listitem>
89
при <link doc="../control.xml">переоткрытии</link> лог-файла или
90
завершении рабочего процесса.
91
</listitem>
92
93
</list>
94
</para>
95
96
<para>
97
Если задан параметр <literal>gzip</literal>, то буфер будет сжиматься перед
98
записью в файл.
99
Степень сжатия может быть задана в диапазоне от 1 (быстрее, но хуже сжатие)
100
до 9 (медленнее, но лучше сжатие).
101
По умолчанию используются буфер размером 64К байт и степень сжатия 1.
102
Данные сжимаются атомарными блоками, и в любой момент времени лог-файл может
103
быть распакован или прочитан с помощью утилиты “<literal>zcat</literal>”.
104
</para>
105
106
<para>
107
Пример:
108
<example>
109
access_log /path/to/log.gz basic gzip flush=5m;
110
</example>
111
</para>
112
113
<para>
114
<note>
115
Для поддержки gzip-сжатия логов nginx должен быть собран с библиотекой zlib.
116
</note>
117
</para>
118
119
<para>
120
В пути файла можно использовать переменные,
121
но такие логи имеют некоторые ограничения:
122
<list type="bullet">
123
124
<listitem>
125
<link doc="../ngx_core_module.xml" id="user">пользователь</link>,
126
с правами которого работают рабочие процессы, должен
127
иметь права на создание файлов в каталоге с такими логами;
128
</listitem>
129
130
<listitem>
131
не работает буферизация;
132
</listitem>
133
134
<listitem>
135
файл открывается для каждой записи в лог и сразу же после записи закрывается.
136
Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов
137
могут храниться в <link id="open_log_file_cache">кэше</link>,
138
то при вращении логов в течение времени, заданного параметром
139
<literal>valid</literal> директивы <link id="open_log_file_cache"/>,
140
запись может продолжаться в старый файл.
141
</listitem>
142
143
</list>
144
</para>
145
146
<para>
147
Параметр <literal>if</literal> включает условную запись в лог.
148
Сессия не будет записываться в лог, если результатом вычисления
149
<value>условия</value> является “0” или пустая строка.
150
</para>
151
152
</directive>
153
154
155
<directive name="log_format">
156
<syntax>
157
<value>название</value>
158
[<literal>escape</literal>=<literal>default</literal>|<literal>json</literal>|<literal>none</literal>]
159
<value>строка</value> ...</syntax>
160
<default></default>
161
<context>stream</context>
162
163
<para>
164
Задаёт формат лога, например:
165
<example>
166
log_format proxy '$remote_addr [$time_local] '
167
'$protocol $status $bytes_sent $bytes_received '
168
'$session_time "$upstream_addr" '
169
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
170
</example>
171
</para>
172
173
<para id="log_format_escape">
174
Параметр <literal>escape</literal> (1.11.8) позволяет задать
175
экранирование символов <literal>json</literal> или <literal>default</literal>
176
в переменных, по умолчанию используется <literal>default</literal>.
177
Параметр <literal>none</literal> (1.13.10) отключает
178
экранирование символов.
179
</para>
180
181
<para id="log_format_escape_default">
182
При использовании <literal>default</literal>
183
символы “<literal>"</literal>”, “<literal>\</literal>”,
184
a также символы со значениями меньше 32 или больше 126
185
экранируются как “<literal>\xXX</literal>”.
186
Если значение переменной не найдено,
187
то в качестве значения в лог будет записываться дефис (“<literal>-</literal>”).
188
</para>
189
190
<para id="log_format_escape_json">
191
При использовании <literal>json</literal>
192
экранируются все символы, недопустимые
193
в JSON <link url="https://datatracker.ietf.org/doc/html/rfc8259#section-7">строках</link>:
194
символы “<literal>"</literal>” и
195
<literal>\</literal>” экранируются как
196
<literal>\"</literal>” и “<literal>\\</literal>”,
197
символы со значениями меньше 32 экранируются как
198
<literal>\n</literal>”,
199
<literal>\r</literal>”,
200
<literal>\t</literal>”,
201
<literal>\b</literal>”,
202
<literal>\f</literal>” или
203
<literal>\u00XX</literal>”.
204
</para>
205
206
</directive>
207
208
209
<directive name="open_log_file_cache">
210
211
<syntax>
212
<literal>max</literal>=<value>N</value>
213
[<literal>inactive</literal>=<value>время</value>]
214
[<literal>min_uses</literal>=<value>N</value>]
215
[<literal>valid</literal>=<value>время</value>]</syntax>
216
<syntax><literal>off</literal></syntax>
217
<default>off</default>
218
<context>stream</context>
219
<context>server</context>
220
221
<para>
222
Задаёт кэш, в котором хранятся дескрипторы файлов часто используемых
223
логов, имена которых заданы с использованием переменных.
224
Параметры директивы:
225
<list type="tag">
226
227
<tag-name><literal>max</literal></tag-name>
228
<tag-desc>
229
задаёт максимальное число дескрипторов в кэше;
230
при переполнении кэша наименее востребованные (LRU)
231
дескрипторы закрываются
232
</tag-desc>
233
234
<tag-name><literal>inactive</literal></tag-name>
235
<tag-desc>
236
задаёт время, после которого закэшированный дескриптор закрывается,
237
если к нему не было обращений в течение этого времени;
238
по умолчанию 10 секунд
239
</tag-desc>
240
241
<tag-name><literal>min_uses</literal></tag-name>
242
<tag-desc>
243
задаёт минимальное число использований файла в течение
244
времени, заданного параметром <literal>inactive</literal>,
245
после которого дескриптор файла будет оставаться открытым в кэше;
246
по умолчанию 1
247
</tag-desc>
248
249
<tag-name><literal>valid</literal></tag-name>
250
<tag-desc>
251
задаёт, через какое время нужно проверять, что файл ещё
252
существует под тем же именем;
253
по умолчанию 60 секунд
254
</tag-desc>
255
256
<tag-name><literal>off</literal></tag-name>
257
<tag-desc>
258
запрещает кэш
259
</tag-desc>
260
261
</list>
262
</para>
263
264
<para>
265
Пример использования:
266
<example>
267
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
268
</example>
269
</para>
270
271
</directive>
272
273
</section>
274
275
</module>
276
277