annotate src/stream/ngx_stream_log_module.c @ 6679:40e8ce405859

Stream: postpone session initialization under accept mutex. Previously, it was possible that some system calls could be invoked while holding the accept mutex. This is clearly wrong as it prevents incoming connections from being accepted as quickly as possible.
author Dmitry Volyntsev <xeioex@nginx.com>
date Tue, 06 Sep 2016 21:28:13 +0300
parents 0125b151c9a5
children 3908156a51fa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 427
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 427
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4327
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 427
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 427
diff changeset
6
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_core.h>
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
10 #include <ngx_stream.h>
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
12 #if (NGX_ZLIB)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
13 #include <zlib.h>
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
14 #endif
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
15
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
17 typedef struct ngx_stream_log_op_s ngx_stream_log_op_t;
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
18
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
19 typedef u_char *(*ngx_stream_log_op_run_pt) (ngx_stream_session_t *s,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
20 u_char *buf, ngx_stream_log_op_t *op);
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
21
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
22 typedef size_t (*ngx_stream_log_op_getlen_pt) (ngx_stream_session_t *s,
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
23 uintptr_t data);
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
24
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
25
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
26 struct ngx_stream_log_op_s {
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
27 size_t len;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
28 ngx_stream_log_op_getlen_pt getlen;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
29 ngx_stream_log_op_run_pt run;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
30 uintptr_t data;
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
31 };
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
32
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
33
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
34 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
35 ngx_str_t name;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
36 ngx_array_t *flushes;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
37 ngx_array_t *ops; /* array of ngx_stream_log_op_t */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
38 } ngx_stream_log_fmt_t;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
39
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
40
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
41 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
42 ngx_array_t formats; /* array of ngx_stream_log_fmt_t */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
43 } ngx_stream_log_main_conf_t;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
44
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
45
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
46 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
47 u_char *start;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
48 u_char *pos;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
49 u_char *last;
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
50
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
51 ngx_event_t *event;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
52 ngx_msec_t flush;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
53 ngx_int_t gzip;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
54 } ngx_stream_log_buf_t;
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
55
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
56
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
57 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
58 ngx_array_t *lengths;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
59 ngx_array_t *values;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
60 } ngx_stream_log_script_t;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
61
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
62
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
63 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
64 ngx_open_file_t *file;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
65 ngx_stream_log_script_t *script;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
66 time_t disk_full_time;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
67 time_t error_log_time;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
68 ngx_syslog_peer_t *syslog_peer;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
69 ngx_stream_log_fmt_t *format;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
70 ngx_stream_complex_value_t *filter;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
71 } ngx_stream_log_t;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
72
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
73
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
74 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
75 ngx_array_t *logs; /* array of ngx_stream_log_t */
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
76
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
77 ngx_open_file_cache_t *open_file_cache;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
78 time_t open_file_cache_valid;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
79 ngx_uint_t open_file_cache_min_uses;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
80
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
81 ngx_uint_t off; /* unsigned off:1 */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
82 } ngx_stream_log_srv_conf_t;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
83
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
84
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
85 typedef struct {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
86 ngx_str_t name;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
87 size_t len;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
88 ngx_stream_log_op_run_pt run;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
89 } ngx_stream_log_var_t;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
90
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
91
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
92 static void ngx_stream_log_write(ngx_stream_session_t *s, ngx_stream_log_t *log,
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
93 u_char *buf, size_t len);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
94 static ssize_t ngx_stream_log_script_write(ngx_stream_session_t *s,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
95 ngx_stream_log_script_t *script, u_char **name, u_char *buf, size_t len);
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
96
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
97 #if (NGX_ZLIB)
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
98 static ssize_t ngx_stream_log_gzip(ngx_fd_t fd, u_char *buf, size_t len,
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
99 ngx_int_t level, ngx_log_t *log);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
100
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
101 static void *ngx_stream_log_gzip_alloc(void *opaque, u_int items, u_int size);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
102 static void ngx_stream_log_gzip_free(void *opaque, void *address);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
103 #endif
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
104
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
105 static void ngx_stream_log_flush(ngx_open_file_t *file, ngx_log_t *log);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
106 static void ngx_stream_log_flush_handler(ngx_event_t *ev);
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
107
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
108 static ngx_int_t ngx_stream_log_variable_compile(ngx_conf_t *cf,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
109 ngx_stream_log_op_t *op, ngx_str_t *value);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
110 static size_t ngx_stream_log_variable_getlen(ngx_stream_session_t *s,
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
111 uintptr_t data);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
112 static u_char *ngx_stream_log_variable(ngx_stream_session_t *s, u_char *buf,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
113 ngx_stream_log_op_t *op);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
114 static uintptr_t ngx_stream_log_escape(u_char *dst, u_char *src, size_t size);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
115
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
116
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
117 static void *ngx_stream_log_create_main_conf(ngx_conf_t *cf);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
118 static void *ngx_stream_log_create_srv_conf(ngx_conf_t *cf);
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
119 static char *ngx_stream_log_merge_srv_conf(ngx_conf_t *cf, void *parent,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
120 void *child);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
121 static char *ngx_stream_log_set_log(ngx_conf_t *cf, ngx_command_t *cmd,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
122 void *conf);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
123 static char *ngx_stream_log_set_format(ngx_conf_t *cf, ngx_command_t *cmd,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
124 void *conf);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
125 static char *ngx_stream_log_compile_format(ngx_conf_t *cf,
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
126 ngx_array_t *flushes, ngx_array_t *ops, ngx_array_t *args, ngx_uint_t s);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
127 static char *ngx_stream_log_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd,
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
128 void *conf);
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
129 static ngx_int_t ngx_stream_log_init(ngx_conf_t *cf);
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
130
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
131
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
132 static ngx_command_t ngx_stream_log_commands[] = {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
133
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
134 { ngx_string("log_format"),
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
135 NGX_STREAM_MAIN_CONF|NGX_CONF_2MORE,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
136 ngx_stream_log_set_format,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
137 NGX_STREAM_MAIN_CONF_OFFSET,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
138 0,
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
139 NULL },
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
140
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
141 { ngx_string("access_log"),
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
142 NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_1MORE,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
143 ngx_stream_log_set_log,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
144 NGX_STREAM_SRV_CONF_OFFSET,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
145 0,
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
146 NULL },
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
147
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
148 { ngx_string("open_log_file_cache"),
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
149 NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1234,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
150 ngx_stream_log_open_file_cache,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
151 NGX_STREAM_SRV_CONF_OFFSET,
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
152 0,
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
153 NULL },
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
154
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
155 ngx_null_command
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
156 };
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
157
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
158
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
159 static ngx_stream_module_t ngx_stream_log_module_ctx = {
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
160 NULL, /* preconfiguration */
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
161 ngx_stream_log_init, /* postconfiguration */
177
4db54fdbcbe7 nginx-0.0.1-2003-11-10-20:17:31 import
Igor Sysoev <igor@sysoev.ru>
parents: 176
diff changeset
162
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
163 ngx_stream_log_create_main_conf, /* create main configuration */
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
164 NULL, /* init main configuration */
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
165
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
166 ngx_stream_log_create_srv_conf, /* create server configuration */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
167 ngx_stream_log_merge_srv_conf /* merge server configuration */
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
168 };
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
169
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
170
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
171 ngx_module_t ngx_stream_log_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
172 NGX_MODULE_V1,
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
173 &ngx_stream_log_module_ctx, /* module context */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
174 ngx_stream_log_commands, /* module directives */
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
175 NGX_STREAM_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
176 NULL, /* init master */
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
177 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
178 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
179 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
180 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
181 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
182 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
183 NGX_MODULE_V1_PADDING
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
184 };
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
185
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
186
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
187 static ngx_int_t
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
188 ngx_stream_log_handler(ngx_stream_session_t *s)
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
189 {
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
190 u_char *line, *p;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
191 size_t len, size;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
192 ssize_t n;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
193 ngx_str_t val;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
194 ngx_uint_t i, l;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
195 ngx_stream_log_t *log;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
196 ngx_stream_log_op_t *op;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
197 ngx_stream_log_buf_t *buffer;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
198 ngx_stream_log_srv_conf_t *lscf;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
199
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
200 ngx_log_debug0(NGX_LOG_DEBUG_STREAM, s->connection->log, 0,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
201 "stream log handler");
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
202
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
203 lscf = ngx_stream_get_module_srv_conf(s, ngx_stream_log_module);
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
204
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
205 if (lscf->off || lscf->logs == NULL) {
427
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
206 return NGX_OK;
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
207 }
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
208
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
209 log = lscf->logs->elts;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
210 for (l = 0; l < lscf->logs->nelts; l++) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
211
5653
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
212 if (log[l].filter) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
213 if (ngx_stream_complex_value(s, log[l].filter, &val) != NGX_OK) {
5653
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
214 return NGX_ERROR;
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
215 }
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
216
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
217 if (val.len == 0 || (val.len == 1 && val.data[0] == '0')) {
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
218 continue;
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
219 }
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
220 }
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
221
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
222 if (ngx_time() == log[l].disk_full_time) {
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
223
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
224 /*
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
225 * on FreeBSD writing to a full filesystem with enabled softupdates
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
226 * may block process for much longer time than writing to non-full
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
227 * filesystem, so we skip writing to a log for one second
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
228 */
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
229
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
230 continue;
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
231 }
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
232
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
233 ngx_stream_script_flush_no_cacheable_variables(s,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
234 log[l].format->flushes);
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
235
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
236 len = 0;
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
237 op = log[l].format->ops->elts;
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
238 for (i = 0; i < log[l].format->ops->nelts; i++) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
239 if (op[i].len == 0) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
240 len += op[i].getlen(s, op[i].data);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
241
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
242 } else {
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
243 len += op[i].len;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
244 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
245 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
246
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
247 if (log[l].syslog_peer) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
248
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
249 /* length of syslog's PRI and HEADER message parts */
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
250 len += sizeof("<255>Jan 01 00:00:00 ") - 1
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
251 + ngx_cycle->hostname.len + 1
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
252 + log[l].syslog_peer->tag.len + 2;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
253
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
254 goto alloc_line;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
255 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
256
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
257 len += NGX_LINEFEED_SIZE;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
258
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
259 buffer = log[l].file ? log[l].file->data : NULL;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
260
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
261 if (buffer) {
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
262
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
263 if (len > (size_t) (buffer->last - buffer->pos)) {
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
264
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
265 ngx_stream_log_write(s, &log[l], buffer->start,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
266 buffer->pos - buffer->start);
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
267
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
268 buffer->pos = buffer->start;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
269 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
270
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
271 if (len <= (size_t) (buffer->last - buffer->pos)) {
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
272
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
273 p = buffer->pos;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
274
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
275 if (buffer->event && p == buffer->start) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
276 ngx_add_timer(buffer->event, buffer->flush);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
277 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
278
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
279 for (i = 0; i < log[l].format->ops->nelts; i++) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
280 p = op[i].run(s, p, &op[i]);
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
281 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
282
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
283 ngx_linefeed(p);
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
284
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
285 buffer->pos = p;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
286
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
287 continue;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
288 }
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
289
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
290 if (buffer->event && buffer->event->timer_set) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
291 ngx_del_timer(buffer->event);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
292 }
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
293 }
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
294
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
295 alloc_line:
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
296
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
297 line = ngx_pnalloc(s->connection->pool, len);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
298 if (line == NULL) {
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
299 return NGX_ERROR;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
300 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
301
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
302 p = line;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
303
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
304 if (log[l].syslog_peer) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
305 p = ngx_syslog_add_header(log[l].syslog_peer, line);
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
306 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
307
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
308 for (i = 0; i < log[l].format->ops->nelts; i++) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
309 p = op[i].run(s, p, &op[i]);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
310 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
311
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
312 if (log[l].syslog_peer) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
313
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
314 size = p - line;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
315
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
316 n = ngx_syslog_send(log[l].syslog_peer, line, size);
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
317
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
318 if (n < 0) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
319 ngx_log_error(NGX_LOG_WARN, s->connection->log, 0,
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
320 "send() to syslog failed");
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
321
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
322 } else if ((size_t) n != size) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
323 ngx_log_error(NGX_LOG_WARN, s->connection->log, 0,
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
324 "send() to syslog has written only %z of %uz",
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
325 n, size);
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
326 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
327
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
328 continue;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
329 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
330
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
331 ngx_linefeed(p);
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
332
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
333 ngx_stream_log_write(s, &log[l], line, p - line);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
334 }
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
335
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
336 return NGX_OK;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
337 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
338
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
339
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
340 static void
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
341 ngx_stream_log_write(ngx_stream_session_t *s, ngx_stream_log_t *log,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
342 u_char *buf, size_t len)
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
343 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
344 u_char *name;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
345 time_t now;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
346 ssize_t n;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
347 ngx_err_t err;
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
348 #if (NGX_ZLIB)
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
349 ngx_stream_log_buf_t *buffer;
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
350 #endif
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
351
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
352 if (log->script == NULL) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
353 name = log->file->name.data;
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
354
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
355 #if (NGX_ZLIB)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
356 buffer = log->file->data;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
357
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
358 if (buffer && buffer->gzip) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
359 n = ngx_stream_log_gzip(log->file->fd, buf, len, buffer->gzip,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
360 s->connection->log);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
361 } else {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
362 n = ngx_write_fd(log->file->fd, buf, len);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
363 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
364 #else
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
365 n = ngx_write_fd(log->file->fd, buf, len);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
366 #endif
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
367
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
368 } else {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
369 name = NULL;
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
370 n = ngx_stream_log_script_write(s, log->script, &name, buf, len);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
371 }
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
372
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
373 if (n == (ssize_t) len) {
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
374 return;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
375 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
376
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
377 now = ngx_time();
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
378
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
379 if (n == -1) {
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
380 err = ngx_errno;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
381
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
382 if (err == NGX_ENOSPC) {
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
383 log->disk_full_time = now;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
384 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
385
1161
6002e0253221 use 60 seconds interval but not 61 seconds
Igor Sysoev <igor@sysoev.ru>
parents: 1074
diff changeset
386 if (now - log->error_log_time > 59) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
387 ngx_log_error(NGX_LOG_ALERT, s->connection->log, err,
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
388 ngx_write_fd_n " to \"%s\" failed", name);
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
389
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
390 log->error_log_time = now;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
391 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
392
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
393 return;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
394 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
395
1161
6002e0253221 use 60 seconds interval but not 61 seconds
Igor Sysoev <igor@sysoev.ru>
parents: 1074
diff changeset
396 if (now - log->error_log_time > 59) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
397 ngx_log_error(NGX_LOG_ALERT, s->connection->log, 0,
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
398 ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
399 name, n, len);
1071
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
400
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
401 log->error_log_time = now;
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
402 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
403 }
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
404
bd4202f92581 log a failure of the writing to access_log once per minute
Igor Sysoev <igor@sysoev.ru>
parents: 905
diff changeset
405
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
406 static ssize_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
407 ngx_stream_log_script_write(ngx_stream_session_t *s,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
408 ngx_stream_log_script_t *script, u_char **name, u_char *buf, size_t len)
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
409 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
410 ssize_t n;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
411 ngx_str_t log;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
412 ngx_open_file_info_t of;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
413 ngx_stream_log_srv_conf_t *lscf;
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4478
diff changeset
414
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
415 if (ngx_stream_script_run(s, &log, script->lengths->elts, 1,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
416 script->values->elts)
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
417 == NULL)
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
418 {
4499
778ef9c3fd2d Fixed spelling in single-line comments.
Ruslan Ermilov <ru@nginx.com>
parents: 4494
diff changeset
419 /* simulate successful logging */
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
420 return len;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
421 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
422
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
423 log.data[log.len - 1] = '\0';
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
424 *name = log.data;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
425
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
426 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, s->connection->log, 0,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
427 "stream log \"%s\"", log.data);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
428
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
429 lscf = ngx_stream_get_module_srv_conf(s, ngx_stream_log_module);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
430
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
431 ngx_memzero(&of, sizeof(ngx_open_file_info_t));
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
432
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
433 of.log = 1;
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
434 of.valid = lscf->open_file_cache_valid;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
435 of.min_uses = lscf->open_file_cache_min_uses;
2277
732bf367dc08 NGX_OPEN_FILE_DIRECTIO_OFF
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
436 of.directio = NGX_OPEN_FILE_DIRECTIO_OFF;
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4478
diff changeset
437
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
438 if (ngx_open_cached_file(lscf->open_file_cache, &log, &of,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
439 s->connection->pool)
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
440 != NGX_OK)
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
441 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
442 ngx_log_error(NGX_LOG_CRIT, s->connection->log, ngx_errno,
2756
09cab3f8d92e *) of.test_only to not open file if only stat() is enough
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
443 "%s \"%s\" failed", of.failed, log.data);
4499
778ef9c3fd2d Fixed spelling in single-line comments.
Ruslan Ermilov <ru@nginx.com>
parents: 4494
diff changeset
444 /* simulate successful logging */
2077
479440385e35 fix error message
Igor Sysoev <igor@sysoev.ru>
parents: 2072
diff changeset
445 return len;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
446 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
447
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
448 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, s->connection->log, 0,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
449 "stream log #%d", of.fd);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
450
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
451 n = ngx_write_fd(of.fd, buf, len);
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
452
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
453 return n;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
454 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
455
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
456
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
457 #if (NGX_ZLIB)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
458
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
459 static ssize_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
460 ngx_stream_log_gzip(ngx_fd_t fd, u_char *buf, size_t len, ngx_int_t level,
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
461 ngx_log_t *log)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
462 {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
463 int rc, wbits, memlevel;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
464 u_char *out;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
465 size_t size;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
466 ssize_t n;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
467 z_stream zstream;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
468 ngx_err_t err;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
469 ngx_pool_t *pool;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
470
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
471 wbits = MAX_WBITS;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
472 memlevel = MAX_MEM_LEVEL - 1;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
473
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
474 while ((ssize_t) len < ((1 << (wbits - 1)) - 262)) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
475 wbits--;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
476 memlevel--;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
477 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
478
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
479 /*
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
480 * This is a formula from deflateBound() for conservative upper bound of
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
481 * compressed data plus 18 bytes of gzip wrapper.
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
482 */
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
483
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
484 size = len + ((len + 7) >> 3) + ((len + 63) >> 6) + 5 + 18;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
485
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
486 ngx_memzero(&zstream, sizeof(z_stream));
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
487
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
488 pool = ngx_create_pool(256, log);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
489 if (pool == NULL) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
490 /* simulate successful logging */
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
491 return len;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
492 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
493
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
494 pool->log = log;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
495
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
496 zstream.zalloc = ngx_stream_log_gzip_alloc;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
497 zstream.zfree = ngx_stream_log_gzip_free;
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
498 zstream.opaque = pool;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
499
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
500 out = ngx_pnalloc(pool, size);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
501 if (out == NULL) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
502 goto done;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
503 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
504
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
505 zstream.next_in = buf;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
506 zstream.avail_in = len;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
507 zstream.next_out = out;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
508 zstream.avail_out = size;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
509
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
510 rc = deflateInit2(&zstream, (int) level, Z_DEFLATED, wbits + 16, memlevel,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
511 Z_DEFAULT_STRATEGY);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
512
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
513 if (rc != Z_OK) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
514 ngx_log_error(NGX_LOG_ALERT, log, 0, "deflateInit2() failed: %d", rc);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
515 goto done;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
516 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
517
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
518 ngx_log_debug4(NGX_LOG_DEBUG_STREAM, log, 0,
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
519 "deflate in: ni:%p no:%p ai:%ud ao:%ud",
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
520 zstream.next_in, zstream.next_out,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
521 zstream.avail_in, zstream.avail_out);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
522
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
523 rc = deflate(&zstream, Z_FINISH);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
524
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
525 if (rc != Z_STREAM_END) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
526 ngx_log_error(NGX_LOG_ALERT, log, 0,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
527 "deflate(Z_FINISH) failed: %d", rc);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
528 goto done;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
529 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
530
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
531 ngx_log_debug5(NGX_LOG_DEBUG_STREAM, log, 0,
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
532 "deflate out: ni:%p no:%p ai:%ud ao:%ud rc:%d",
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
533 zstream.next_in, zstream.next_out,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
534 zstream.avail_in, zstream.avail_out,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
535 rc);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
536
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
537 size -= zstream.avail_out;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
538
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
539 rc = deflateEnd(&zstream);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
540
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
541 if (rc != Z_OK) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
542 ngx_log_error(NGX_LOG_ALERT, log, 0, "deflateEnd() failed: %d", rc);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
543 goto done;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
544 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
545
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
546 n = ngx_write_fd(fd, out, size);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
547
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
548 if (n != (ssize_t) size) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
549 err = (n == -1) ? ngx_errno : 0;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
550
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
551 ngx_destroy_pool(pool);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
552
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
553 ngx_set_errno(err);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
554 return -1;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
555 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
556
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
557 done:
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
558
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
559 ngx_destroy_pool(pool);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
560
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
561 /* simulate successful logging */
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
562 return len;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
563 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
564
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
565
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
566 static void *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
567 ngx_stream_log_gzip_alloc(void *opaque, u_int items, u_int size)
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
568 {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
569 ngx_pool_t *pool = opaque;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
570
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
571 ngx_log_debug2(NGX_LOG_DEBUG_STREAM, pool->log, 0,
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
572 "gzip alloc: n:%ud s:%ud", items, size);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
573
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
574 return ngx_palloc(pool, items * size);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
575 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
576
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
577
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
578 static void
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
579 ngx_stream_log_gzip_free(void *opaque, void *address)
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
580 {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
581 #if 0
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
582 ngx_pool_t *pool = opaque;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
583
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
584 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pool->log, 0,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
585 "gzip free: %p", address);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
586 #endif
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
587 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
588
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
589 #endif
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
590
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
591
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
592 static void
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
593 ngx_stream_log_flush(ngx_open_file_t *file, ngx_log_t *log)
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
594 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
595 size_t len;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
596 ssize_t n;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
597 ngx_stream_log_buf_t *buffer;
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
598
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
599 buffer = file->data;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
600
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
601 len = buffer->pos - buffer->start;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
602
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
603 if (len == 0) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
604 return;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
605 }
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
606
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
607 #if (NGX_ZLIB)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
608 if (buffer->gzip) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
609 n = ngx_stream_log_gzip(file->fd, buffer->start, len, buffer->gzip,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
610 log);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
611 } else {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
612 n = ngx_write_fd(file->fd, buffer->start, len);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
613 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
614 #else
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
615 n = ngx_write_fd(file->fd, buffer->start, len);
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
616 #endif
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
617
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
618 if (n == -1) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
619 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
620 ngx_write_fd_n " to \"%s\" failed",
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
621 file->name.data);
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
622
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
623 } else if ((size_t) n != len) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
624 ngx_log_error(NGX_LOG_ALERT, log, 0,
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
625 ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
626 file->name.data, n, len);
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
627 }
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
628
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
629 buffer->pos = buffer->start;
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
630
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
631 if (buffer->event && buffer->event->timer_set) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
632 ngx_del_timer(buffer->event);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
633 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
634 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
635
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
636
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
637 static void
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
638 ngx_stream_log_flush_handler(ngx_event_t *ev)
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
639 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
640 ngx_open_file_t *file;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
641 ngx_stream_log_buf_t *buffer;
5897
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
642
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
643 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0,
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
644 "stream log buffer flush handler");
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
645
5897
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
646 if (ev->timedout) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
647 ngx_stream_log_flush(ev->data, ev->log);
5897
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
648 return;
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
649 }
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
650
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
651 /* cancel the flush timer for graceful shutdown */
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
652
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
653 file = ev->data;
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
654 buffer = file->data;
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
655
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
656 buffer->event = NULL;
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
657 }
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
658
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
659
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
660 static u_char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
661 ngx_stream_log_copy_short(ngx_stream_session_t *s, u_char *buf,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
662 ngx_stream_log_op_t *op)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
663 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
664 size_t len;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
665 uintptr_t data;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
666
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
667 len = op->len;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
668 data = op->data;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
669
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
670 while (len--) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
671 *buf++ = (u_char) (data & 0xff);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
672 data >>= 8;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
673 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
674
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
675 return buf;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
676 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
677
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
678
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
679 static u_char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
680 ngx_stream_log_copy_long(ngx_stream_session_t *s, u_char *buf,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
681 ngx_stream_log_op_t *op)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
682 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
683 return ngx_cpymem(buf, (u_char *) op->data, op->len);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
684 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
685
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
686
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
687 static ngx_int_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
688 ngx_stream_log_variable_compile(ngx_conf_t *cf, ngx_stream_log_op_t *op,
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
689 ngx_str_t *value)
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
690 {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
691 ngx_int_t index;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
692
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
693 index = ngx_stream_get_variable_index(cf, value);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
694 if (index == NGX_ERROR) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
695 return NGX_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
696 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
697
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
698 op->len = 0;
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
699 op->getlen = ngx_stream_log_variable_getlen;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
700 op->run = ngx_stream_log_variable;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
701 op->data = index;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
702
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
703 return NGX_OK;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
704 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
705
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
706
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
707 static size_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
708 ngx_stream_log_variable_getlen(ngx_stream_session_t *s, uintptr_t data)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
709 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
710 uintptr_t len;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
711 ngx_stream_variable_value_t *value;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
712
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
713 value = ngx_stream_get_indexed_variable(s, data);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
714
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
715 if (value == NULL || value->not_found) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
716 return 1;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
717 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
718
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
719 len = ngx_stream_log_escape(NULL, value->data, value->len);
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
720
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
721 value->escape = len ? 1 : 0;
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
722
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
723 return value->len + len * 3;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
724 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
725
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
726
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
727 static u_char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
728 ngx_stream_log_variable(ngx_stream_session_t *s, u_char *buf,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
729 ngx_stream_log_op_t *op)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
730 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
731 ngx_stream_variable_value_t *value;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
732
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
733 value = ngx_stream_get_indexed_variable(s, op->data);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
734
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
735 if (value == NULL || value->not_found) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
736 *buf = '-';
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
737 return buf + 1;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
738 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
739
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
740 if (value->escape == 0) {
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
741 return ngx_cpymem(buf, value->data, value->len);
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
742
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
743 } else {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
744 return (u_char *) ngx_stream_log_escape(buf, value->data, value->len);
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
745 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
746 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
747
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
748
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
749 static uintptr_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
750 ngx_stream_log_escape(u_char *dst, u_char *src, size_t size)
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
751 {
3275
b344b68da8c5 optimize some cycles:
Igor Sysoev <igor@sysoev.ru>
parents: 3115
diff changeset
752 ngx_uint_t n;
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
753 static u_char hex[] = "0123456789ABCDEF";
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
754
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
755 static uint32_t escape[] = {
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
756 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
757
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
758 /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
759 0x00000004, /* 0000 0000 0000 0000 0000 0000 0000 0100 */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
760
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
761 /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
762 0x10000000, /* 0001 0000 0000 0000 0000 0000 0000 0000 */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
763
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
764 /* ~}| {zyx wvut srqp onml kjih gfed cba` */
4191
08d8af70760c Improved access log escaping to better protect other software.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
765 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
766
4191
08d8af70760c Improved access log escaping to better protect other software.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
767 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
08d8af70760c Improved access log escaping to better protect other software.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
768 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
08d8af70760c Improved access log escaping to better protect other software.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
769 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
08d8af70760c Improved access log escaping to better protect other software.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
770 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
771 };
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
772
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
773
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
774 if (dst == NULL) {
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
775
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
776 /* find the number of the characters to be escaped */
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
777
3115
204ea173234f style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3038
diff changeset
778 n = 0;
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
779
3275
b344b68da8c5 optimize some cycles:
Igor Sysoev <igor@sysoev.ru>
parents: 3115
diff changeset
780 while (size) {
6626
b3682580c1bd Avoid left-shifting integers into the sign bit, which is undefined.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5927
diff changeset
781 if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
782 n++;
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
783 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
784 src++;
3275
b344b68da8c5 optimize some cycles:
Igor Sysoev <igor@sysoev.ru>
parents: 3115
diff changeset
785 size--;
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
786 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
787
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
788 return (uintptr_t) n;
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
789 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
790
3275
b344b68da8c5 optimize some cycles:
Igor Sysoev <igor@sysoev.ru>
parents: 3115
diff changeset
791 while (size) {
6626
b3682580c1bd Avoid left-shifting integers into the sign bit, which is undefined.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5927
diff changeset
792 if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
793 *dst++ = '\\';
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
794 *dst++ = 'x';
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
795 *dst++ = hex[*src >> 4];
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
796 *dst++ = hex[*src & 0xf];
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
797 src++;
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
798
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
799 } else {
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
800 *dst++ = *src++;
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
801 }
3275
b344b68da8c5 optimize some cycles:
Igor Sysoev <igor@sysoev.ru>
parents: 3115
diff changeset
802 size--;
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
803 }
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
804
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1640
diff changeset
805 return (uintptr_t) dst;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
806 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
807
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
808
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
809 static void *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
810 ngx_stream_log_create_main_conf(ngx_conf_t *cf)
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
811 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
812 ngx_stream_log_main_conf_t *conf;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
813
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
814 conf = ngx_pcalloc(cf->pool, sizeof(ngx_stream_log_main_conf_t));
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
815 if (conf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
816 return NULL;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
817 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
818
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
819 if (ngx_array_init(&conf->formats, cf->pool, 4,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
820 sizeof(ngx_stream_log_fmt_t))
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
821 != NGX_OK)
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
822 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
823 return NULL;
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
824 }
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
825
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
826 return conf;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
827 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
828
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
829
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
830 static void *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
831 ngx_stream_log_create_srv_conf(ngx_conf_t *cf)
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
832 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
833 ngx_stream_log_srv_conf_t *conf;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
834
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
835 conf = ngx_pcalloc(cf->pool, sizeof(ngx_stream_log_srv_conf_t));
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
836 if (conf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
837 return NULL;
427
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
838 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
839
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
840 conf->open_file_cache = NGX_CONF_UNSET_PTR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
841
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
842 return conf;
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
843 }
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
844
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
845
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
846 static char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
847 ngx_stream_log_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
848 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
849 ngx_stream_log_srv_conf_t *prev = parent;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
850 ngx_stream_log_srv_conf_t *conf = child;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
851
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
852 if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
853
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
854 conf->open_file_cache = prev->open_file_cache;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
855 conf->open_file_cache_valid = prev->open_file_cache_valid;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
856 conf->open_file_cache_min_uses = prev->open_file_cache_min_uses;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
857
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
858 if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
859 conf->open_file_cache = NULL;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
860 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
861 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
862
1074
8164f479b362 fix "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 1071
diff changeset
863 if (conf->logs || conf->off) {
8164f479b362 fix "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 1071
diff changeset
864 return NGX_CONF_OK;
8164f479b362 fix "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 1071
diff changeset
865 }
427
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
866
2078
9acbc5e7bcbd fix variable access_log merging
Igor Sysoev <igor@sysoev.ru>
parents: 2077
diff changeset
867 conf->logs = prev->logs;
9acbc5e7bcbd fix variable access_log merging
Igor Sysoev <igor@sysoev.ru>
parents: 2077
diff changeset
868 conf->off = prev->off;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
869
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
870 return NGX_CONF_OK;
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
871 }
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
872
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
873
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
874 static char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
875 ngx_stream_log_set_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
876 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
877 ngx_stream_log_srv_conf_t *lscf = conf;
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
878
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
879 ssize_t size;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
880 ngx_int_t gzip;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
881 ngx_uint_t i, n;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
882 ngx_msec_t flush;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
883 ngx_str_t *value, name, s;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
884 ngx_stream_log_t *log;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
885 ngx_syslog_peer_t *peer;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
886 ngx_stream_log_buf_t *buffer;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
887 ngx_stream_log_fmt_t *fmt;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
888 ngx_stream_script_compile_t sc;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
889 ngx_stream_log_main_conf_t *lmcf;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
890 ngx_stream_compile_complex_value_t ccv;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
891
427
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
892 value = cf->args->elts;
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
893
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
894 if (ngx_strcmp(value[1].data, "off") == 0) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
895 lscf->off = 1;
3038
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
896 if (cf->args->nelts == 2) {
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
897 return NGX_CONF_OK;
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
898 }
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
899
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
900 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
901 "invalid parameter \"%V\"", &value[2]);
cd8738e76610 strict testing "access_log off"
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
902 return NGX_CONF_ERROR;
427
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
903 }
0d08eabe5c7b nginx-0.0.10-2004-09-15-20:00:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
904
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
905 if (lscf->logs == NULL) {
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
906 lscf->logs = ngx_array_create(cf->pool, 2, sizeof(ngx_stream_log_t));
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
907 if (lscf->logs == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
908 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
909 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
910 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
911
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
912 lmcf = ngx_stream_conf_get_module_main_conf(cf, ngx_stream_log_module);
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
913
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
914 log = ngx_array_push(lscf->logs);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
915 if (log == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
916 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
917 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
918
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
919 ngx_memzero(log, sizeof(ngx_stream_log_t));
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
920
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
921
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
922 if (ngx_strncmp(value[1].data, "syslog:", 7) == 0) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
923
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
924 peer = ngx_pcalloc(cf->pool, sizeof(ngx_syslog_peer_t));
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
925 if (peer == NULL) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
926 return NGX_CONF_ERROR;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
927 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
928
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
929 if (ngx_syslog_process_conf(cf, peer) != NGX_CONF_OK) {
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
930 return NGX_CONF_ERROR;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
931 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
932
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
933 log->syslog_peer = peer;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
934
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
935 goto process_formats;
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
936 }
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
937
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
938 n = ngx_stream_script_variables_count(&value[1]);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
939
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
940 if (n == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
941 log->file = ngx_conf_open_file(cf->cycle, &value[1]);
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
942 if (log->file == NULL) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
943 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
944 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
945
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
946 } else {
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
947 if (ngx_conf_full_name(cf->cycle, &value[1], 0) != NGX_OK) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
948 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
949 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
950
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
951 log->script = ngx_pcalloc(cf->pool, sizeof(ngx_stream_log_script_t));
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
952 if (log->script == NULL) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
953 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
954 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
955
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
956 ngx_memzero(&sc, sizeof(ngx_stream_script_compile_t));
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
957
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
958 sc.cf = cf;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
959 sc.source = &value[1];
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
960 sc.lengths = &log->script->lengths;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
961 sc.values = &log->script->values;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
962 sc.variables = n;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
963 sc.complete_lengths = 1;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
964 sc.complete_values = 1;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
965
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
966 if (ngx_stream_script_compile(&sc) != NGX_OK) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
967 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
968 }
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
969 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
970
5702
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
971 process_formats:
777202558122 Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents: 5653
diff changeset
972
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
973 if (cf->args->nelts >= 3) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
974 name = value[2];
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
975
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
976 } else {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
977 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
978 "log format is not specified");
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
979 return NGX_CONF_ERROR;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
980 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
981
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
982 fmt = lmcf->formats.elts;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
983 for (i = 0; i < lmcf->formats.nelts; i++) {
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
984 if (fmt[i].name.len == name.len
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
985 && ngx_strcasecmp(fmt[i].name.data, name.data) == 0)
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
986 {
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
987 log->format = &fmt[i];
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
988 break;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
989 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
990 }
100
7ebc8b7fb816 nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
991
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
992 if (log->format == NULL) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
993 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
994 "unknown log format \"%V\"", &name);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
995 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
996 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
997
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
998 size = 0;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
999 flush = 0;
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1000 gzip = 0;
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1001
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1002 for (i = 3; i < cf->args->nelts; i++) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1003
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1004 if (ngx_strncmp(value[i].data, "buffer=", 7) == 0) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1005 s.len = value[i].len - 7;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1006 s.data = value[i].data + 7;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1007
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1008 size = ngx_parse_size(&s);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1009
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1010 if (size == NGX_ERROR || size == 0) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1011 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1012 "invalid buffer size \"%V\"", &s);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1013 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1014 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1015
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1016 continue;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1017 }
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1018
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1019 if (ngx_strncmp(value[i].data, "flush=", 6) == 0) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1020 s.len = value[i].len - 6;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1021 s.data = value[i].data + 6;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1022
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1023 flush = ngx_parse_time(&s, 0);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1024
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1025 if (flush == (ngx_msec_t) NGX_ERROR || flush == 0) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1026 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1027 "invalid flush time \"%V\"", &s);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1028 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1029 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1030
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1031 continue;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1032 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1033
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1034 if (ngx_strncmp(value[i].data, "gzip", 4) == 0
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1035 && (value[i].len == 4 || value[i].data[4] == '='))
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1036 {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1037 #if (NGX_ZLIB)
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1038 if (size == 0) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1039 size = 64 * 1024;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1040 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1041
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1042 if (value[i].len == 4) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1043 gzip = Z_BEST_SPEED;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1044 continue;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1045 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1046
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1047 s.len = value[i].len - 5;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1048 s.data = value[i].data + 5;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1049
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1050 gzip = ngx_atoi(s.data, s.len);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1051
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1052 if (gzip < 1 || gzip > 9) {
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1053 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1054 "invalid compression level \"%V\"", &s);
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1055 return NGX_CONF_ERROR;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1056 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1057
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1058 continue;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1059
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1060 #else
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1061 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1062 "nginx was built without zlib support");
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1063 return NGX_CONF_ERROR;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1064 #endif
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1065 }
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1066
5653
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
1067 if (ngx_strncmp(value[i].data, "if=", 3) == 0) {
5833
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1068 s.len = value[i].len - 3;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1069 s.data = value[i].data + 3;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1070
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1071 ngx_memzero(&ccv, sizeof(ngx_stream_compile_complex_value_t));
5833
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1072
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1073 ccv.cf = cf;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1074 ccv.value = &s;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1075 ccv.complex_value = ngx_palloc(cf->pool,
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1076 sizeof(ngx_stream_complex_value_t));
5833
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1077 if (ccv.complex_value == NULL) {
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1078 return NGX_CONF_ERROR;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1079 }
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1080
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1081 if (ngx_stream_compile_complex_value(&ccv) != NGX_OK) {
5833
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1082 return NGX_CONF_ERROR;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1083 }
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1084
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1085 log->filter = ccv.complex_value;
e3016ee8dba3 Access log: fixed the "if=" parameter with buffering (ticket #625).
Valentin Bartenev <vbart@nginx.com>
parents: 5799
diff changeset
1086
5653
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
1087 continue;
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
1088 }
cb308813b453 Access log: the "if" parameter of the "access_log" directive.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5361
diff changeset
1089
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1090 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1091 "invalid parameter \"%V\"", &value[i]);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1092 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1093 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1094
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1095 if (flush && size == 0) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1096 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1097 "no buffer is defined for access_log \"%V\"",
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1098 &value[1]);
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1099 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1100 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1101
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1102 if (size) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1103
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1104 if (log->script) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1105 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4133
59b99f217c6d Replaced "can not" with "cannot" and "could not" in a bunch of places.
Ruslan Ermilov <ru@nginx.com>
parents: 3991
diff changeset
1106 "buffered logs cannot have variables in name");
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1107 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1108 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1109
5799
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1110 if (log->syslog_peer) {
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1111 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1112 "logs to syslog cannot be buffered");
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1113 return NGX_CONF_ERROR;
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1114 }
b1f8285297a7 Access log: allowed logs to syslog with "if=" (ticket #596).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5719
diff changeset
1115
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1116 if (log->file->data) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1117 buffer = log->file->data;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1118
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1119 if (buffer->last - buffer->start != size
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1120 || buffer->flush != flush
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1121 || buffer->gzip != gzip)
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1122 {
4984
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1123 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1124 "access_log \"%V\" already defined "
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1125 "with conflicting parameters",
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1126 &value[1]);
4984
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1127 return NGX_CONF_ERROR;
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1128 }
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1129
7737f0d788c1 Access log: fixed redundant buffer reallocation.
Valentin Bartenev <vbart@nginx.com>
parents: 4893
diff changeset
1130 return NGX_CONF_OK;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1131 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1132
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1133 buffer = ngx_pcalloc(cf->pool, sizeof(ngx_stream_log_buf_t));
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1134 if (buffer == NULL) {
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1135 return NGX_CONF_ERROR;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1136 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1137
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1138 buffer->start = ngx_pnalloc(cf->pool, size);
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1139 if (buffer->start == NULL) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1140 return NGX_CONF_ERROR;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1141 }
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1142
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1143 buffer->pos = buffer->start;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1144 buffer->last = buffer->start + size;
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1145
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1146 if (flush) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1147 buffer->event = ngx_pcalloc(cf->pool, sizeof(ngx_event_t));
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1148 if (buffer->event == NULL) {
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1149 return NGX_CONF_ERROR;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1150 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1151
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1152 buffer->event->data = log->file;
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1153 buffer->event->handler = ngx_stream_log_flush_handler;
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1154 buffer->event->log = &cf->cycle->new_log;
5897
dff86e2246a5 Access log: cancel the flush timer on graceful shutdown.
Valentin Bartenev <vbart@nginx.com>
parents: 5833
diff changeset
1155 buffer->event->cancelable = 1;
4986
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1156
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1157 buffer->flush = flush;
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1158 }
3efc49b156d9 Access log: the "flush" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
1159
4988
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1160 buffer->gzip = gzip;
3849bb380605 Access log: the "gzip" parameter of the "access_log" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4986
diff changeset
1161
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1162 log->file->flush = ngx_stream_log_flush;
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4984
diff changeset
1163 log->file->data = buffer;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1164 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1165
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
1166 return NGX_CONF_OK;
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
1167 }
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1168
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1169
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
1170 static char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1171 ngx_stream_log_set_format(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1172 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1173 ngx_stream_log_main_conf_t *lmcf = conf;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1174
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1175 ngx_str_t *value;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1176 ngx_uint_t i;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1177 ngx_stream_log_fmt_t *fmt;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1178
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1179 value = cf->args->elts;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1180
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1181 fmt = lmcf->formats.elts;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1182 for (i = 0; i < lmcf->formats.nelts; i++) {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1183 if (fmt[i].name.len == value[1].len
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1184 && ngx_strcmp(fmt[i].name.data, value[1].data) == 0)
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1185 {
2036
1c009c5a163b fix error log message
Igor Sysoev <igor@sysoev.ru>
parents: 2008
diff changeset
1186 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1c009c5a163b fix error log message
Igor Sysoev <igor@sysoev.ru>
parents: 2008
diff changeset
1187 "duplicate \"log_format\" name \"%V\"",
1c009c5a163b fix error log message
Igor Sysoev <igor@sysoev.ru>
parents: 2008
diff changeset
1188 &value[1]);
1c009c5a163b fix error log message
Igor Sysoev <igor@sysoev.ru>
parents: 2008
diff changeset
1189 return NGX_CONF_ERROR;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1190 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1191 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1192
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1193 fmt = ngx_array_push(&lmcf->formats);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1194 if (fmt == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1195 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1196 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1197
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1198 fmt->name = value[1];
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1199
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1200 fmt->flushes = ngx_array_create(cf->pool, 4, sizeof(ngx_int_t));
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1201 if (fmt->flushes == NULL) {
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1202 return NGX_CONF_ERROR;
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1203 }
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1204
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1205 fmt->ops = ngx_array_create(cf->pool, 16, sizeof(ngx_stream_log_op_t));
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1206 if (fmt->ops == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1207 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1208 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1209
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1210 return ngx_stream_log_compile_format(cf, fmt->flushes, fmt->ops,
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1211 cf->args, 2);
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1212 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1213
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1214
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1215 static char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1216 ngx_stream_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes,
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1217 ngx_array_t *ops, ngx_array_t *args, ngx_uint_t s)
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1218 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1219 u_char *data, *p, ch;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1220 size_t i, len;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1221 ngx_str_t *value, var;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1222 ngx_int_t *flush;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1223 ngx_uint_t bracket;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1224 ngx_stream_log_op_t *op;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1225
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1226 value = args->elts;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1227
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1228 for ( /* void */ ; s < args->nelts; s++) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1229
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1230 i = 0;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1231
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1232 while (i < value[s].len) {
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1233
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1234 op = ngx_array_push(ops);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1235 if (op == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1236 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1237 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1238
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1239 data = &value[s].data[i];
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1240
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
1241 if (value[s].data[i] == '$') {
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1242
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1243 if (++i == value[s].len) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1244 goto invalid;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1245 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1246
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1247 if (value[s].data[i] == '{') {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1248 bracket = 1;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1249
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1250 if (++i == value[s].len) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1251 goto invalid;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1252 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1253
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1254 var.data = &value[s].data[i];
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1255
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1256 } else {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1257 bracket = 0;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1258 var.data = &value[s].data[i];
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1259 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1260
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1261 for (var.len = 0; i < value[s].len; i++, var.len++) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1262 ch = value[s].data[i];
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1263
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1264 if (ch == '}' && bracket) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1265 i++;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1266 bracket = 0;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1267 break;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1268 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1269
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1270 if ((ch >= 'A' && ch <= 'Z')
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1271 || (ch >= 'a' && ch <= 'z')
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1272 || (ch >= '0' && ch <= '9')
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1273 || ch == '_')
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1274 {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1275 continue;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1276 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1277
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1278 break;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1279 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1280
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1281 if (bracket) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1282 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1283 "the closing bracket in \"%V\" "
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1284 "variable is missing", &var);
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1285 return NGX_CONF_ERROR;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1286 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1287
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1288 if (var.len == 0) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1289 goto invalid;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1290 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1291
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1292 if (ngx_stream_log_variable_compile(cf, op, &var) != NGX_OK) {
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1293 return NGX_CONF_ERROR;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1294 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1295
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1296 if (flushes) {
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1297
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1298 flush = ngx_array_push(flushes);
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1299 if (flush == NULL) {
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1300 return NGX_CONF_ERROR;
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1301 }
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1302
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1303 *flush = op->data; /* variable index */
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1304 }
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2247
diff changeset
1305
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1306 continue;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1307 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1308
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1309 i++;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1310
880
3b763d36e055 axe old % log format
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
1311 while (i < value[s].len && value[s].data[i] != '$') {
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1312 i++;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1313 }
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1314
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1315 len = &value[s].data[i] - data;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1316
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1317 if (len) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1318
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1319 op->len = len;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1320 op->getlen = NULL;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1321
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1322 if (len <= sizeof(uintptr_t)) {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1323 op->run = ngx_stream_log_copy_short;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1324 op->data = 0;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1325
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1326 while (len--) {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1327 op->data <<= 8;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1328 op->data |= data[len];
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1329 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1330
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1331 } else {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1332 op->run = ngx_stream_log_copy_long;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1333
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2036
diff changeset
1334 p = ngx_pnalloc(cf->pool, len);
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1335 if (p == NULL) {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1336 return NGX_CONF_ERROR;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1337 }
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1338
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1339 ngx_memcpy(p, data, len);
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1340 op->data = (uintptr_t) p;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1341 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1342 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1343 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1344 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1345
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1346 return NGX_CONF_OK;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1347
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1348 invalid:
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1349
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1350 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid parameter \"%s\"", data);
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1351
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1352 return NGX_CONF_ERROR;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1353 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1354
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1355
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1356 static char *
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1357 ngx_stream_log_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1358 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1359 ngx_stream_log_srv_conf_t *lscf = conf;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1360
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1361 time_t inactive, valid;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1362 ngx_str_t *value, s;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1363 ngx_int_t max, min_uses;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1364 ngx_uint_t i;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1365
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1366 if (lscf->open_file_cache != NGX_CONF_UNSET_PTR) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1367 return "is duplicate";
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1368 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1369
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1370 value = cf->args->elts;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1371
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1372 max = 0;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1373 inactive = 10;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1374 valid = 60;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1375 min_uses = 1;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1376
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1377 for (i = 1; i < cf->args->nelts; i++) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1378
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1379 if (ngx_strncmp(value[i].data, "max=", 4) == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1380
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1381 max = ngx_atoi(value[i].data + 4, value[i].len - 4);
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1382 if (max == NGX_ERROR) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1383 goto failed;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1384 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1385
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1386 continue;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1387 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1388
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1389 if (ngx_strncmp(value[i].data, "inactive=", 9) == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1390
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1391 s.len = value[i].len - 9;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1392 s.data = value[i].data + 9;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1393
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1394 inactive = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1395 if (inactive == (time_t) NGX_ERROR) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1396 goto failed;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1397 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1398
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1399 continue;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1400 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1401
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1402 if (ngx_strncmp(value[i].data, "min_uses=", 9) == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1403
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1404 min_uses = ngx_atoi(value[i].data + 9, value[i].len - 9);
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1405 if (min_uses == NGX_ERROR) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1406 goto failed;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1407 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1408
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1409 continue;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1410 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1411
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1412 if (ngx_strncmp(value[i].data, "valid=", 6) == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1413
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1414 s.len = value[i].len - 6;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1415 s.data = value[i].data + 6;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1416
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1417 valid = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1418 if (valid == (time_t) NGX_ERROR) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1419 goto failed;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1420 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1421
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1422 continue;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1423 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1424
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1425 if (ngx_strcmp(value[i].data, "off") == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1426
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1427 lscf->open_file_cache = NULL;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1428
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1429 continue;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1430 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1431
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1432 failed:
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1433
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1434 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1435 "invalid \"open_log_file_cache\" parameter \"%V\"",
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1436 &value[i]);
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1437 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1438 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1439
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1440 if (lscf->open_file_cache == NULL) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1441 return NGX_CONF_OK;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1442 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1443
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1444 if (max == 0) {
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1445 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1446 "\"open_log_file_cache\" must have \"max\" parameter");
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1447 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1448 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1449
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1450 lscf->open_file_cache = ngx_open_file_cache_init(cf->pool, max, inactive);
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1451
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1452 if (lscf->open_file_cache) {
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1453
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1454 lscf->open_file_cache_valid = valid;
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1455 lscf->open_file_cache_min_uses = min_uses;
2072
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1456
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1457 return NGX_CONF_OK;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1458 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1459
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1460 return NGX_CONF_ERROR;
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1461 }
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1462
ee2fecdfdef7 variables in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1463
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1464 static ngx_int_t
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1465 ngx_stream_log_init(ngx_conf_t *cf)
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1466 {
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1467 ngx_stream_core_main_conf_t *cmcf;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1468
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1469 cmcf = ngx_stream_conf_get_module_main_conf(cf, ngx_stream_core_module);
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1470
6678
0125b151c9a5 Stream: log module.
Vladimir Homutov <vl@nginx.com>
parents: 6626
diff changeset
1471 cmcf->access_log_handler = ngx_stream_log_handler;
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1472
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1473 return NGX_OK;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1474 }