Mercurial > hg > nginx
diff src/core/ngx_log.c @ 236:86e473b5641e
nginx-0.0.1-2004-01-22-09:47:28 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 22 Jan 2004 06:47:28 +0000 |
parents | 6bd5d25b6744 |
children | 2a0540287298 |
line wrap: on
line diff
--- a/src/core/ngx_log.c +++ b/src/core/ngx_log.c @@ -3,7 +3,7 @@ #include <ngx_core.h> -ngx_inline static int ngx_log_is_full(ngx_log_t *log, char *errstr, size_t len); +static void ngx_log_write(ngx_log_t *log, char *errstr, size_t len); static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); @@ -55,13 +55,10 @@ void ngx_log_error_core(int level, ngx_l #endif { char errstr[MAX_ERROR_STR]; - size_t len; + size_t len, max; #if (HAVE_VARIADIC_MACROS) va_list args; #endif -#if (WIN32) - u_long written; -#endif if (log->file->fd == NGX_INVALID_FILE) { return; @@ -70,37 +67,42 @@ void ngx_log_error_core(int level, ngx_l ngx_memcpy(errstr, ngx_cached_err_log_time.data, ngx_cached_err_log_time.len); +#if (WIN32) + max = MAX_ERROR_STR - 2; +#else + max = MAX_ERROR_STR - 1; +#endif + len = ngx_cached_err_log_time.len; - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, - " [%s] ", err_levels[level]); + len += ngx_snprintf(errstr + len, max - len, " [%s] ", err_levels[level]); /* pid#tid */ - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, + len += ngx_snprintf(errstr + len, max - len, PID_T_FMT "#%d: ", ngx_getpid(), /* STUB */ 0); if (log->data) { - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, + len += ngx_snprintf(errstr + len, max - len, "*%u ", * (u_int *) log->data); } #if (HAVE_VARIADIC_MACROS) va_start(args, fmt); - len += ngx_vsnprintf(errstr + len, sizeof(errstr) - len - 1, fmt, args); + len += ngx_vsnprintf(errstr + len, max - len, fmt, args); va_end(args); #else - len += ngx_vsnprintf(errstr + len, sizeof(errstr) - len - 1, fmt, args); + len += ngx_vsnprintf(errstr + len, max - len, fmt, args); #endif if (err) { - if (len > sizeof(errstr) - 50) { + if (len > max - 50) { /* leave a space for an error code */ - len = sizeof(errstr) - 50; + len = max - 50; errstr[len++] = '.'; errstr[len++] = '.'; errstr[len++] = '.'; @@ -108,48 +110,56 @@ void ngx_log_error_core(int level, ngx_l #if (WIN32) if ((unsigned) err >= 0x80000000) { - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, - " (%X: ", err); + len += ngx_snprintf(errstr + len, max - len, " (%X: ", err); } else { - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, - " (%d: ", err); + len += ngx_snprintf(errstr + len, max - len, " (%d: ", err); } #else - len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, - " (%d: ", err); + len += ngx_snprintf(errstr + len, max - len, " (%d: ", err); #endif - if (ngx_log_is_full(log, errstr, len)) { + if (len >= max) { + ngx_log_write(log, errstr, max); return; } - len += ngx_strerror_r(err, errstr + len, sizeof(errstr) - len - 1); + len += ngx_strerror_r(err, errstr + len, max - len); - if (ngx_log_is_full(log, errstr, len)) { + if (len >= max) { + ngx_log_write(log, errstr, max); return; } errstr[len++] = ')'; - if (ngx_log_is_full(log, errstr, len)) { + if (len >= max) { + ngx_log_write(log, errstr, max); return; } } else { - if (ngx_log_is_full(log, errstr, len)) { + if (len >= max) { + ngx_log_write(log, errstr, max); return; } } if (level != NGX_LOG_DEBUG && log->handler) { - len += log->handler(log->data, errstr + len, sizeof(errstr) - len - 1); + len += log->handler(log->data, errstr + len, max - len); - if (ngx_log_is_full(log, errstr, len)) { - return; + if (len >= max) { + len = max; } } + ngx_log_write(log, errstr, len); +} + + +static void ngx_log_write(ngx_log_t *log, char *errstr, size_t len) +{ #if (WIN32) + u_long written; errstr[len++] = CR; errstr[len++] = LF; @@ -164,38 +174,6 @@ void ngx_log_error_core(int level, ngx_l } -ngx_inline static int ngx_log_is_full(ngx_log_t *log, char *errstr, size_t len) -{ -#if (WIN32) - u_long written; - - if (len > MAX_ERROR_STR - 2) { - len = MAX_ERROR_STR - 2; - - errstr[len++] = CR; - errstr[len++] = LF; - WriteFile(log->file->fd, errstr, len, &written, NULL); - - return 1; - } - -#else - - if (len > MAX_ERROR_STR - 1) { - len = MAX_ERROR_STR - 1; - - errstr[len++] = LF; - write(log->file->fd, errstr, len); - - return 1; - } - -#endif - - return 0; -} - - #if !(HAVE_VARIADIC_MACROS) void ngx_log_error(int level, ngx_log_t *log, ngx_err_t err, @@ -320,7 +298,7 @@ ngx_log_t *ngx_log_create_errlog(ngx_cyc ngx_test_null(log, ngx_pcalloc(cycle->pool, sizeof(ngx_log_t)), NULL); ngx_test_null(log->file, ngx_conf_open_file(cycle, name), NULL); -#if 1 +#if 0 /* STUB */ log->log_level = NGX_LOG_DEBUG | NGX_LOG_DEBUG_CORE | NGX_LOG_DEBUG_ALLOC | NGX_LOG_DEBUG_EVENT | NGX_LOG_DEBUG_HTTP; #endif @@ -369,9 +347,8 @@ char *ngx_set_error_log_levels(ngx_conf_ } } - d = NGX_LOG_DEBUG_FIRST; - for (n = 0; n < /* STUB */ 4; n++) { - if (ngx_strcmp(value[i].data, debug_levels[n]) == 0) { + for (n = 0, d = NGX_LOG_DEBUG_FIRST; d <= NGX_LOG_DEBUG_LAST; d <<= 1) { + if (ngx_strcmp(value[i].data, debug_levels[n++]) == 0) { if (log->log_level & ~NGX_LOG_DEBUG_ALL) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid log level \"%s\"", @@ -381,8 +358,6 @@ char *ngx_set_error_log_levels(ngx_conf_ log->log_level |= d; } - - d <<= 1; }