Mercurial > hg > nginx-quic
comparison src/core/ngx_log.c @ 208:0b67be7d4489
nginx-0.0.1-2003-12-08-23:48:12 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 08 Dec 2003 20:48:12 +0000 |
parents | 6e0fef527732 |
children | e1c815be05ae |
comparison
equal
deleted
inserted
replaced
207:6e0fef527732 | 208:0b67be7d4489 |
---|---|
20 static ngx_str_t errlog_name = ngx_string("errlog"); | 20 static ngx_str_t errlog_name = ngx_string("errlog"); |
21 | 21 |
22 static ngx_command_t ngx_errlog_commands[] = { | 22 static ngx_command_t ngx_errlog_commands[] = { |
23 | 23 |
24 {ngx_string("error_log"), | 24 {ngx_string("error_log"), |
25 NGX_MAIN_CONF|NGX_CONF_TAKE12, | 25 NGX_MAIN_CONF|NGX_CONF_1MORE, |
26 ngx_set_error_log, | 26 ngx_set_error_log, |
27 0, | 27 0, |
28 0, | 28 0, |
29 NULL}, | 29 NULL}, |
30 | 30 |
49 static const char *err_levels[] = { | 49 static const char *err_levels[] = { |
50 "stderr", "emerg", "alert", "crit", "error", | 50 "stderr", "emerg", "alert", "crit", "error", |
51 "warn", "notice", "info", "debug" | 51 "warn", "notice", "info", "debug" |
52 }; | 52 }; |
53 | 53 |
54 static const char *debug_levels[] = { | |
55 "debug", "debug_alloc", "debug_event", "debug_http" | |
56 }; | |
57 | |
58 | |
54 #if (HAVE_VARIADIC_MACROS) | 59 #if (HAVE_VARIADIC_MACROS) |
55 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, | 60 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, |
56 const char *fmt, ...) | 61 const char *fmt, ...) |
57 #else | 62 #else |
58 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, | 63 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, |
260 | 265 |
261 return &ngx_log; | 266 return &ngx_log; |
262 } | 267 } |
263 | 268 |
264 | 269 |
265 ngx_log_t *ngx_log_create_errlog(ngx_cycle_t *cycle, ngx_str_t *name) | 270 ngx_log_t *ngx_log_create_errlog(ngx_cycle_t *cycle, ngx_array_t *args) |
266 { | 271 { |
267 ngx_log_t *log; | 272 ngx_log_t *log; |
273 ngx_str_t *value, *name; | |
274 | |
275 if (args) { | |
276 value = args->elts; | |
277 name = &value[1]; | |
278 | |
279 } else { | |
280 name = NULL; | |
281 } | |
268 | 282 |
269 ngx_test_null(log, ngx_pcalloc(cycle->pool, sizeof(ngx_log_t)), NULL); | 283 ngx_test_null(log, ngx_pcalloc(cycle->pool, sizeof(ngx_log_t)), NULL); |
270 ngx_test_null(log->file, ngx_conf_open_file(cycle, name), NULL); | 284 ngx_test_null(log->file, ngx_conf_open_file(cycle, name), NULL); |
271 | 285 |
272 #if 0 | 286 #if 0 |
277 } | 291 } |
278 | 292 |
279 | 293 |
280 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | 294 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
281 { | 295 { |
282 ngx_int_t i; | 296 ngx_int_t i, n, d; |
283 ngx_str_t *value; | 297 ngx_str_t *value; |
284 | 298 |
285 value = cf->args->elts; | 299 value = cf->args->elts; |
286 | 300 |
287 if (value[1].len == 6 && ngx_strcmp(value[1].data, "stderr") == 0) { | 301 if (value[1].len == 6 && ngx_strcmp(value[1].data, "stderr") == 0) { |
289 | 303 |
290 } else { | 304 } else { |
291 cf->cycle->log->file->name = value[1]; | 305 cf->cycle->log->file->name = value[1]; |
292 } | 306 } |
293 | 307 |
294 if (cf->args->nelts == 3) { | 308 for (i = 2; i < cf->args->nelts; i++) { |
295 for (i = 1; i <= /* STUB ??? */ NGX_LOG_DEBUG; i++) { | 309 |
296 if (ngx_strcmp(value[2].data, err_levels[i]) == 0) { | 310 for (n = 1; n < NGX_LOG_DEBUG; n++) { |
297 cf->cycle->log->log_level = i; | 311 if (ngx_strcmp(value[i].data, err_levels[n]) == 0) { |
298 break; | 312 |
313 if (cf->cycle->log->log_level != 0) { | |
314 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
315 "invalid log level \"%s\"", | |
316 value[i].data); | |
317 return NGX_CONF_ERROR; | |
318 } | |
319 | |
320 cf->cycle->log->log_level = n; | |
321 continue; | |
299 } | 322 } |
300 } | 323 } |
301 if (i > NGX_LOG_DEBUG) { | 324 |
325 d = NGX_LOG_DEBUG_FIRST; | |
326 for (n = 0; n < /* STUB */ 3; n++) { | |
327 if (ngx_strcmp(value[i].data, debug_levels[n]) == 0) { | |
328 if (cf->cycle->log->log_level & ~NGX_LOG_DEBUG_ALL) { | |
329 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
330 "invalid log level \"%s\"", | |
331 value[i].data); | |
332 return NGX_CONF_ERROR; | |
333 } | |
334 | |
335 cf->cycle->log->log_level |= d; | |
336 d <<= 1; | |
337 continue; | |
338 } | |
339 } | |
340 | |
341 | |
342 if (cf->cycle->log->log_level == 0) { | |
302 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | 343 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
303 "invalid log level \"%s\"", value[2].data); | 344 "invalid log level \"%s\"", value[i].data); |
304 return NGX_CONF_ERROR; | 345 return NGX_CONF_ERROR; |
305 } | 346 } |
306 } | 347 } |
307 | 348 |
308 return NGX_CONF_OK; | 349 return NGX_CONF_OK; |