Mercurial > hg > nginx
annotate src/core/ngx_log.h @ 9299:2706b60dc225
Core: error logging rate limiting.
With this change, error logging to files can be rate-limited with
the "rate=" parameter. The parameter specifies allowed log messages
rate to a particular file (per worker), in messages per second (m/s).
By default, "rate=1000m/s" is used.
Rate limiting is implemented using the "leaky bucket" method, similarly
to the limit_req module.
Maximum burst size is set to the number of log messages per second
for each severity level, so "error" messages are logged even if the
rate limit is hit by "info" messages (but not vice versa). When the
limit is reached for a particular level, the "too many log messages,
limiting" message is logged at this level.
If debug logging is enabled, either for the particular log file or for
the particular connection, rate limiting is not used.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 25 Jun 2024 22:58:56 +0300 |
parents | af5b47569cb2 |
children |
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:
426
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:
426
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 | 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:
426
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:
426
diff
changeset
|
6 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
426
diff
changeset
|
7 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #ifndef _NGX_LOG_H_INCLUDED_ |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 #define _NGX_LOG_H_INCLUDED_ |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
100
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
12 #include <ngx_config.h> |
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
13 #include <ngx_core.h> |
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
14 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
15 |
307
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
16 #define NGX_LOG_STDERR 0 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
17 #define NGX_LOG_EMERG 1 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
18 #define NGX_LOG_ALERT 2 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
19 #define NGX_LOG_CRIT 3 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
20 #define NGX_LOG_ERR 4 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
21 #define NGX_LOG_WARN 5 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
22 #define NGX_LOG_NOTICE 6 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
23 #define NGX_LOG_INFO 7 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
24 #define NGX_LOG_DEBUG 8 |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
25 |
379
73688d5d7fc3
nginx-0.0.7-2004-07-06-20:12:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
307
diff
changeset
|
26 #define NGX_LOG_DEBUG_CORE 0x010 |
73688d5d7fc3
nginx-0.0.7-2004-07-06-20:12:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
307
diff
changeset
|
27 #define NGX_LOG_DEBUG_ALLOC 0x020 |
73688d5d7fc3
nginx-0.0.7-2004-07-06-20:12:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
307
diff
changeset
|
28 #define NGX_LOG_DEBUG_MUTEX 0x040 |
73688d5d7fc3
nginx-0.0.7-2004-07-06-20:12:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
307
diff
changeset
|
29 #define NGX_LOG_DEBUG_EVENT 0x080 |
73688d5d7fc3
nginx-0.0.7-2004-07-06-20:12:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
307
diff
changeset
|
30 #define NGX_LOG_DEBUG_HTTP 0x100 |
1136 | 31 #define NGX_LOG_DEBUG_MAIL 0x200 |
6484
4b420f9c4c5d
Removed the prototype mysql module.
Ruslan Ermilov <ru@nginx.com>
parents:
6186
diff
changeset
|
32 #define NGX_LOG_DEBUG_STREAM 0x400 |
417
0526206251f6
nginx-0.0.10-2004-09-07-19:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
389
diff
changeset
|
33 |
0526206251f6
nginx-0.0.10-2004-09-07-19:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
389
diff
changeset
|
34 /* |
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:
426
diff
changeset
|
35 * do not forget to update debug_levels[] in src/core/ngx_log.c |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
426
diff
changeset
|
36 * after the adding a new debug level |
417
0526206251f6
nginx-0.0.10-2004-09-07-19:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
389
diff
changeset
|
37 */ |
208
0b67be7d4489
nginx-0.0.1-2003-12-08-23:48:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
201
diff
changeset
|
38 |
307
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
39 #define NGX_LOG_DEBUG_FIRST NGX_LOG_DEBUG_CORE |
6115 | 40 #define NGX_LOG_DEBUG_LAST NGX_LOG_DEBUG_STREAM |
307
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
41 #define NGX_LOG_DEBUG_CONNECTION 0x80000000 |
ce375c313e96
nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
278
diff
changeset
|
42 #define NGX_LOG_DEBUG_ALL 0x7ffffff0 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
43 |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
57
diff
changeset
|
44 |
483 | 45 typedef u_char *(*ngx_log_handler_pt) (ngx_log_t *log, u_char *buf, size_t len); |
5702
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
46 typedef void (*ngx_log_writer_pt) (ngx_log_t *log, ngx_uint_t level, |
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
47 u_char *buf, size_t len); |
160
e7e094d34162
nginx-0.0.1-2003-10-27-11:53:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
115
diff
changeset
|
48 |
e7e094d34162
nginx-0.0.1-2003-10-27-11:53:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
115
diff
changeset
|
49 |
9299
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
50 typedef struct { |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
51 ngx_uint_t rate; |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
52 ngx_atomic_t excess; |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
53 ngx_atomic_t last; |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
54 } ngx_log_limit_t; |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
55 |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
56 |
191
71ce40b3c37b
nginx-0.0.1-2003-11-19-19:26:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
186
diff
changeset
|
57 struct ngx_log_s { |
257
70e1c7d2b83d
nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
234
diff
changeset
|
58 ngx_uint_t log_level; |
160
e7e094d34162
nginx-0.0.1-2003-10-27-11:53:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
115
diff
changeset
|
59 ngx_open_file_t *file; |
483 | 60 |
495 | 61 ngx_atomic_uint_t connection; |
483 | 62 |
63 ngx_log_handler_pt handler; | |
160
e7e094d34162
nginx-0.0.1-2003-10-27-11:53:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
115
diff
changeset
|
64 void *data; |
483 | 65 |
5702
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
66 ngx_log_writer_pt writer; |
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
67 void *wdata; |
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
68 |
483 | 69 /* |
70 * we declare "action" as "char *" because the actions are usually | |
71 * the static strings and in the "u_char *" case we have to override | |
72 * their types all the time | |
73 */ | |
74 | |
75 char *action; | |
5254
7ecaa9e4bf1b
Core: support several "error_log" directives.
Vladimir Homutov <vl@nginx.com>
parents:
4412
diff
changeset
|
76 |
9299
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
77 ngx_log_limit_t *limit; |
2706b60dc225
Core: error logging rate limiting.
Maxim Dounin <mdounin@mdounin.ru>
parents:
9296
diff
changeset
|
78 |
5254
7ecaa9e4bf1b
Core: support several "error_log" directives.
Vladimir Homutov <vl@nginx.com>
parents:
4412
diff
changeset
|
79 ngx_log_t *next; |
191
71ce40b3c37b
nginx-0.0.1-2003-11-19-19:26:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
186
diff
changeset
|
80 }; |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
81 |
461 | 82 |
83 #define NGX_MAX_ERROR_STR 2048 | |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
84 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
85 |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
86 /*********************************/ |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
87 |
3673
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
88 #if (NGX_HAVE_C99_VARIADIC_MACROS) |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
89 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
90 #define NGX_HAVE_VARIADIC_MACROS 1 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
91 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
92 #define ngx_log_error(level, log, ...) \ |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
93 if ((log)->log_level >= level) ngx_log_error_core(level, log, __VA_ARGS__) |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
94 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
95 void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
96 const char *fmt, ...); |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
97 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
98 #define ngx_log_debug(level, log, ...) \ |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
99 if ((log)->log_level & level) \ |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
100 ngx_log_error_core(NGX_LOG_DEBUG, log, __VA_ARGS__) |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
101 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
102 /*********************************/ |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
103 |
e27070fb6c6b
try to use C99 variadic macros first:
Igor Sysoev <igor@sysoev.ru>
parents:
2785
diff
changeset
|
104 #elif (NGX_HAVE_GCC_VARIADIC_MACROS) |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
105 |
455 | 106 #define NGX_HAVE_VARIADIC_MACROS 1 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
107 |
483 | 108 #define ngx_log_error(level, log, args...) \ |
543 | 109 if ((log)->log_level >= level) ngx_log_error_core(level, log, args) |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
110 |
278
0ba4821f4460
nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
111 void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, |
499 | 112 const char *fmt, ...); |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
113 |
483 | 114 #define ngx_log_debug(level, log, args...) \ |
543 | 115 if ((log)->log_level & level) \ |
483 | 116 ngx_log_error_core(NGX_LOG_DEBUG, log, args) |
117 | |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
118 /*********************************/ |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
57
diff
changeset
|
119 |
6161
e034af368274
Fixed bullying style of comments.
Ruslan Ermilov <ru@nginx.com>
parents:
6115
diff
changeset
|
120 #else /* no variadic macros */ |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
121 |
455 | 122 #define NGX_HAVE_VARIADIC_MACROS 0 |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
123 |
503 | 124 void ngx_cdecl ngx_log_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, |
499 | 125 const char *fmt, ...); |
278
0ba4821f4460
nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
126 void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, |
499 | 127 const char *fmt, va_list args); |
503 | 128 void ngx_cdecl ngx_log_debug_core(ngx_log_t *log, ngx_err_t err, |
129 const char *fmt, ...); | |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
130 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
131 |
6161
e034af368274
Fixed bullying style of comments.
Ruslan Ermilov <ru@nginx.com>
parents:
6115
diff
changeset
|
132 #endif /* variadic macros */ |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
133 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
134 |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
135 /*********************************/ |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
136 |
277
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
137 #if (NGX_DEBUG) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
138 |
455 | 139 #if (NGX_HAVE_VARIADIC_MACROS) |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
140 |
4397
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
141 #define ngx_log_debug0(level, log, err, fmt) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
142 ngx_log_debug(level, log, err, fmt) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
143 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
144 #define ngx_log_debug1(level, log, err, fmt, arg1) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
145 ngx_log_debug(level, log, err, fmt, arg1) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
146 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
147 #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
148 ngx_log_debug(level, log, err, fmt, arg1, arg2) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
149 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
150 #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
151 ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
152 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
153 #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
154 ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3, arg4) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
155 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
156 #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
157 ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
158 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
159 #define ngx_log_debug6(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
160 arg1, arg2, arg3, arg4, arg5, arg6) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
161 ngx_log_debug(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
162 arg1, arg2, arg3, arg4, arg5, arg6) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
163 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
164 #define ngx_log_debug7(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
165 arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
166 ngx_log_debug(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
167 arg1, arg2, arg3, arg4, arg5, arg6, arg7) |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
168 |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
169 #define ngx_log_debug8(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
170 arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
171 ngx_log_debug(level, log, err, fmt, \ |
d3000365ac65
Changed ngx_log_debugN() macros to verify the number of arguments
Ruslan Ermilov <ru@nginx.com>
parents:
4283
diff
changeset
|
172 arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) |
389
537de4dca8ca
nginx-0.0.7-2004-07-13-21:59:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
379
diff
changeset
|
173 |
515 | 174 |
6161
e034af368274
Fixed bullying style of comments.
Ruslan Ermilov <ru@nginx.com>
parents:
6115
diff
changeset
|
175 #else /* no variadic macros */ |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
176 |
483 | 177 #define ngx_log_debug0(level, log, err, fmt) \ |
543 | 178 if ((log)->log_level & level) \ |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
179 ngx_log_debug_core(log, err, fmt) |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
180 |
483 | 181 #define ngx_log_debug1(level, log, err, fmt, arg1) \ |
543 | 182 if ((log)->log_level & level) \ |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
183 ngx_log_debug_core(log, err, fmt, arg1) |
210
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
208
diff
changeset
|
184 |
483 | 185 #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \ |
543 | 186 if ((log)->log_level & level) \ |
210
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
208
diff
changeset
|
187 ngx_log_debug_core(log, err, fmt, arg1, arg2) |
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
208
diff
changeset
|
188 |
483 | 189 #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \ |
543 | 190 if ((log)->log_level & level) \ |
213
f536f91e8e99
nginx-0.0.1-2003-12-19-15:45:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
210
diff
changeset
|
191 ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3) |
f536f91e8e99
nginx-0.0.1-2003-12-19-15:45:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
210
diff
changeset
|
192 |
483 | 193 #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \ |
543 | 194 if ((log)->log_level & level) \ |
214
e0c502f15852
nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
213
diff
changeset
|
195 ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4) |
e0c502f15852
nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
213
diff
changeset
|
196 |
483 | 197 #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \ |
543 | 198 if ((log)->log_level & level) \ |
214
e0c502f15852
nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
213
diff
changeset
|
199 ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5) |
e0c502f15852
nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
213
diff
changeset
|
200 |
483 | 201 #define ngx_log_debug6(level, log, err, fmt, \ |
202 arg1, arg2, arg3, arg4, arg5, arg6) \ | |
543 | 203 if ((log)->log_level & level) \ |
210
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
208
diff
changeset
|
204 ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6) |
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
208
diff
changeset
|
205 |
483 | 206 #define ngx_log_debug7(level, log, err, fmt, \ |
207 arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ | |
543 | 208 if ((log)->log_level & level) \ |
483 | 209 ngx_log_debug_core(log, err, fmt, \ |
389
537de4dca8ca
nginx-0.0.7-2004-07-13-21:59:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
379
diff
changeset
|
210 arg1, arg2, arg3, arg4, arg5, arg6, arg7) |
537de4dca8ca
nginx-0.0.7-2004-07-13-21:59:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
379
diff
changeset
|
211 |
483 | 212 #define ngx_log_debug8(level, log, err, fmt, \ |
213 arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ | |
543 | 214 if ((log)->log_level & level) \ |
483 | 215 ngx_log_debug_core(log, err, fmt, \ |
216 arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) | |
217 | |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
218 #endif |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
219 |
6161
e034af368274
Fixed bullying style of comments.
Ruslan Ermilov <ru@nginx.com>
parents:
6115
diff
changeset
|
220 #else /* !NGX_DEBUG */ |
277
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
221 |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
222 #define ngx_log_debug0(level, log, err, fmt) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
223 #define ngx_log_debug1(level, log, err, fmt, arg1) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
224 #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
225 #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
226 #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
227 #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
228 #define ngx_log_debug6(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6) |
426
3f88935a02e8
nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
417
diff
changeset
|
229 #define ngx_log_debug7(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \ |
3f88935a02e8
nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
417
diff
changeset
|
230 arg6, arg7) |
483 | 231 #define ngx_log_debug8(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \ |
232 arg6, arg7, arg8) | |
277
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
233 |
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
234 #endif |
201
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
235 |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
236 /*********************************/ |
267ea1d98683
nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
237 |
7744
f18db38a9826
Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents:
6484
diff
changeset
|
238 ngx_log_t *ngx_log_init(u_char *prefix, u_char *error_log); |
2752
2d82d3cfbfa0
change ngx_log_abort() interface
Igor Sysoev <igor@sysoev.ru>
parents:
2749
diff
changeset
|
239 void ngx_cdecl ngx_log_abort(ngx_err_t err, const char *fmt, ...); |
2743
d8316f307b6a
issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents:
2722
diff
changeset
|
240 void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...); |
2765 | 241 u_char *ngx_log_errno(u_char *buf, u_char *last, ngx_err_t err); |
5260
e088695737c3
Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents:
5254
diff
changeset
|
242 ngx_int_t ngx_log_open_default(ngx_cycle_t *cycle); |
e088695737c3
Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents:
5254
diff
changeset
|
243 ngx_int_t ngx_log_redirect_stderr(ngx_cycle_t *cycle); |
5702
777202558122
Added syslog support for error_log and access_log directives.
Vladimir Homutov <vl@nginx.com>
parents:
5260
diff
changeset
|
244 ngx_log_t *ngx_log_get_file_log(ngx_log_t *head); |
5254
7ecaa9e4bf1b
Core: support several "error_log" directives.
Vladimir Homutov <vl@nginx.com>
parents:
4412
diff
changeset
|
245 char *ngx_log_set_log(ngx_conf_t *cf, ngx_log_t **head); |
234
cd71b95716b4
nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
218
diff
changeset
|
246 |
109
a9bc21d63fe4
nginx-0.0.1-2003-07-02-18:41:17 import
Igor Sysoev <igor@sysoev.ru>
parents:
106
diff
changeset
|
247 |
4283
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
248 /* |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
249 * ngx_write_stderr() cannot be implemented as macro, since |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
250 * MSVC does not allow to use #ifdef inside macro parameters. |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
251 * |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
252 * ngx_write_fd() is used instead of ngx_write_console(), since |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
253 * CharToOemBuff() inside ngx_write_console() cannot be used with |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
254 * read only buffer as destination and CharToOemBuff() is not needed |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
255 * for ngx_write_stderr() anyway. |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
256 */ |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
257 static ngx_inline void |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
258 ngx_write_stderr(char *text) |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
259 { |
5763
09e734739e46
Style: use ngx_strlen() instead of strlen().
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents:
5702
diff
changeset
|
260 (void) ngx_write_fd(ngx_stderr, text, ngx_strlen(text)); |
4283
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
261 } |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
262 |
f72496073689
Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents:
3673
diff
changeset
|
263 |
6186
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
264 static ngx_inline void |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
265 ngx_write_stdout(char *text) |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
266 { |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
267 (void) ngx_write_fd(ngx_stdout, text, ngx_strlen(text)); |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
268 } |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
269 |
db138b3b645e
Core: added support for writing to stdout.
Vladimir Homutov <vl@nginx.com>
parents:
6161
diff
changeset
|
270 |
100
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
271 extern ngx_module_t ngx_errlog_module; |
2743
d8316f307b6a
issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents:
2722
diff
changeset
|
272 extern ngx_uint_t ngx_use_stderr; |
100
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
273 |
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
274 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
275 #endif /* _NGX_LOG_H_INCLUDED_ */ |