comparison src/core/ngx_log.c @ 5962:727177743c3c

Core: added disk_full_time checks to error log.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 13 Jan 2015 19:51:37 +0300
parents c3b08217f2a2
children 93fee708f168
comparison
equal deleted inserted replaced
5961:7554c83287dc 5962:727177743c3c
89 { 89 {
90 #if (NGX_HAVE_VARIADIC_MACROS) 90 #if (NGX_HAVE_VARIADIC_MACROS)
91 va_list args; 91 va_list args;
92 #endif 92 #endif
93 u_char *p, *last, *msg; 93 u_char *p, *last, *msg;
94 ssize_t n;
95 ngx_uint_t wrote_stderr, debug_connection;
94 u_char errstr[NGX_MAX_ERROR_STR]; 96 u_char errstr[NGX_MAX_ERROR_STR];
95 ngx_uint_t wrote_stderr, debug_connection;
96 97
97 last = errstr + NGX_MAX_ERROR_STR; 98 last = errstr + NGX_MAX_ERROR_STR;
98 99
99 ngx_memcpy(errstr, ngx_cached_err_log_time.data, 100 ngx_memcpy(errstr, ngx_cached_err_log_time.data,
100 ngx_cached_err_log_time.len); 101 ngx_cached_err_log_time.len);
148 break; 149 break;
149 } 150 }
150 151
151 if (log->writer) { 152 if (log->writer) {
152 log->writer(log, level, errstr, p - errstr); 153 log->writer(log, level, errstr, p - errstr);
153 log = log->next; 154 goto next;
154 continue; 155 }
155 } 156
156 157 if (ngx_time() == log->disk_full_time) {
157 (void) ngx_write_fd(log->file->fd, errstr, p - errstr); 158
159 /*
160 * on FreeBSD writing to a full filesystem with enabled softupdates
161 * may block process for much longer time than writing to non-full
162 * filesystem, so we skip writing to a log for one second
163 */
164
165 goto next;
166 }
167
168 n = ngx_write_fd(log->file->fd, errstr, p - errstr);
169
170 if (n == -1 && ngx_errno == NGX_ENOSPC) {
171 log->disk_full_time = ngx_time();
172 }
158 173
159 if (log->file->fd == ngx_stderr) { 174 if (log->file->fd == ngx_stderr) {
160 wrote_stderr = 1; 175 wrote_stderr = 1;
161 } 176 }
177
178 next:
162 179
163 log = log->next; 180 log = log->next;
164 } 181 }
165 182
166 if (!ngx_use_stderr 183 if (!ngx_use_stderr