Mercurial > hg > nginx
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 |