Annotation of embedaddon/nginx/src/core/ngx_log.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_LOG_H_INCLUDED_
9: #define _NGX_LOG_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14:
15:
16: #define NGX_LOG_STDERR 0
17: #define NGX_LOG_EMERG 1
18: #define NGX_LOG_ALERT 2
19: #define NGX_LOG_CRIT 3
20: #define NGX_LOG_ERR 4
21: #define NGX_LOG_WARN 5
22: #define NGX_LOG_NOTICE 6
23: #define NGX_LOG_INFO 7
24: #define NGX_LOG_DEBUG 8
25:
26: #define NGX_LOG_DEBUG_CORE 0x010
27: #define NGX_LOG_DEBUG_ALLOC 0x020
28: #define NGX_LOG_DEBUG_MUTEX 0x040
29: #define NGX_LOG_DEBUG_EVENT 0x080
30: #define NGX_LOG_DEBUG_HTTP 0x100
31: #define NGX_LOG_DEBUG_MAIL 0x200
32: #define NGX_LOG_DEBUG_MYSQL 0x400
33:
34: /*
35: * do not forget to update debug_levels[] in src/core/ngx_log.c
36: * after the adding a new debug level
37: */
38:
39: #define NGX_LOG_DEBUG_FIRST NGX_LOG_DEBUG_CORE
40: #define NGX_LOG_DEBUG_LAST NGX_LOG_DEBUG_MYSQL
41: #define NGX_LOG_DEBUG_CONNECTION 0x80000000
42: #define NGX_LOG_DEBUG_ALL 0x7ffffff0
43:
44:
45: typedef u_char *(*ngx_log_handler_pt) (ngx_log_t *log, u_char *buf, size_t len);
46:
47:
48: struct ngx_log_s {
49: ngx_uint_t log_level;
50: ngx_open_file_t *file;
51:
52: ngx_atomic_uint_t connection;
53:
54: ngx_log_handler_pt handler;
55: void *data;
56:
57: /*
58: * we declare "action" as "char *" because the actions are usually
59: * the static strings and in the "u_char *" case we have to override
60: * their types all the time
61: */
62:
63: char *action;
64: };
65:
66:
67: #define NGX_MAX_ERROR_STR 2048
68:
69:
70: /*********************************/
71:
72: #if (NGX_HAVE_C99_VARIADIC_MACROS)
73:
74: #define NGX_HAVE_VARIADIC_MACROS 1
75:
76: #define ngx_log_error(level, log, ...) \
77: if ((log)->log_level >= level) ngx_log_error_core(level, log, __VA_ARGS__)
78:
79: void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
80: const char *fmt, ...);
81:
82: #define ngx_log_debug(level, log, ...) \
83: if ((log)->log_level & level) \
84: ngx_log_error_core(NGX_LOG_DEBUG, log, __VA_ARGS__)
85:
86: /*********************************/
87:
88: #elif (NGX_HAVE_GCC_VARIADIC_MACROS)
89:
90: #define NGX_HAVE_VARIADIC_MACROS 1
91:
92: #define ngx_log_error(level, log, args...) \
93: if ((log)->log_level >= level) ngx_log_error_core(level, log, args)
94:
95: void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
96: const char *fmt, ...);
97:
98: #define ngx_log_debug(level, log, args...) \
99: if ((log)->log_level & level) \
100: ngx_log_error_core(NGX_LOG_DEBUG, log, args)
101:
102: /*********************************/
103:
104: #else /* NO VARIADIC MACROS */
105:
106: #define NGX_HAVE_VARIADIC_MACROS 0
107:
108: void ngx_cdecl ngx_log_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
109: const char *fmt, ...);
110: void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
111: const char *fmt, va_list args);
112: void ngx_cdecl ngx_log_debug_core(ngx_log_t *log, ngx_err_t err,
113: const char *fmt, ...);
114:
115:
116: #endif /* VARIADIC MACROS */
117:
118:
119: /*********************************/
120:
121: #if (NGX_DEBUG)
122:
123: #if (NGX_HAVE_VARIADIC_MACROS)
124:
125: #define ngx_log_debug0(level, log, err, fmt) \
126: ngx_log_debug(level, log, err, fmt)
127:
128: #define ngx_log_debug1(level, log, err, fmt, arg1) \
129: ngx_log_debug(level, log, err, fmt, arg1)
130:
131: #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \
132: ngx_log_debug(level, log, err, fmt, arg1, arg2)
133:
134: #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
135: ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3)
136:
137: #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \
138: ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3, arg4)
139:
140: #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \
141: ngx_log_debug(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5)
142:
143: #define ngx_log_debug6(level, log, err, fmt, \
144: arg1, arg2, arg3, arg4, arg5, arg6) \
145: ngx_log_debug(level, log, err, fmt, \
146: arg1, arg2, arg3, arg4, arg5, arg6)
147:
148: #define ngx_log_debug7(level, log, err, fmt, \
149: arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
150: ngx_log_debug(level, log, err, fmt, \
151: arg1, arg2, arg3, arg4, arg5, arg6, arg7)
152:
153: #define ngx_log_debug8(level, log, err, fmt, \
154: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
155: ngx_log_debug(level, log, err, fmt, \
156: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
157:
158:
159: #else /* NO VARIADIC MACROS */
160:
161: #define ngx_log_debug0(level, log, err, fmt) \
162: if ((log)->log_level & level) \
163: ngx_log_debug_core(log, err, fmt)
164:
165: #define ngx_log_debug1(level, log, err, fmt, arg1) \
166: if ((log)->log_level & level) \
167: ngx_log_debug_core(log, err, fmt, arg1)
168:
169: #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \
170: if ((log)->log_level & level) \
171: ngx_log_debug_core(log, err, fmt, arg1, arg2)
172:
173: #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
174: if ((log)->log_level & level) \
175: ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3)
176:
177: #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \
178: if ((log)->log_level & level) \
179: ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4)
180:
181: #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \
182: if ((log)->log_level & level) \
183: ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5)
184:
185: #define ngx_log_debug6(level, log, err, fmt, \
186: arg1, arg2, arg3, arg4, arg5, arg6) \
187: if ((log)->log_level & level) \
188: ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6)
189:
190: #define ngx_log_debug7(level, log, err, fmt, \
191: arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
192: if ((log)->log_level & level) \
193: ngx_log_debug_core(log, err, fmt, \
194: arg1, arg2, arg3, arg4, arg5, arg6, arg7)
195:
196: #define ngx_log_debug8(level, log, err, fmt, \
197: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
198: if ((log)->log_level & level) \
199: ngx_log_debug_core(log, err, fmt, \
200: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
201:
202: #endif
203:
204: #else /* NO NGX_DEBUG */
205:
206: #define ngx_log_debug0(level, log, err, fmt)
207: #define ngx_log_debug1(level, log, err, fmt, arg1)
208: #define ngx_log_debug2(level, log, err, fmt, arg1, arg2)
209: #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
210: #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4)
211: #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5)
212: #define ngx_log_debug6(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6)
213: #define ngx_log_debug7(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \
214: arg6, arg7)
215: #define ngx_log_debug8(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \
216: arg6, arg7, arg8)
217:
218: #endif
219:
220: /*********************************/
221:
222: ngx_log_t *ngx_log_init(u_char *prefix);
223: ngx_log_t *ngx_log_create(ngx_cycle_t *cycle, ngx_str_t *name);
224: char *ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log);
225: void ngx_cdecl ngx_log_abort(ngx_err_t err, const char *fmt, ...);
226: void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
227: u_char *ngx_log_errno(u_char *buf, u_char *last, ngx_err_t err);
228:
229:
230: /*
231: * ngx_write_stderr() cannot be implemented as macro, since
232: * MSVC does not allow to use #ifdef inside macro parameters.
233: *
234: * ngx_write_fd() is used instead of ngx_write_console(), since
235: * CharToOemBuff() inside ngx_write_console() cannot be used with
236: * read only buffer as destination and CharToOemBuff() is not needed
237: * for ngx_write_stderr() anyway.
238: */
239: static ngx_inline void
240: ngx_write_stderr(char *text)
241: {
242: (void) ngx_write_fd(ngx_stderr, text, strlen(text));
243: }
244:
245:
246: extern ngx_module_t ngx_errlog_module;
247: extern ngx_uint_t ngx_use_stderr;
248:
249:
250: #endif /* _NGX_LOG_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>