mirror of
https://github.com/nginx/nginx.git
synced 2024-12-18 21:23:36 -06:00
Core: added disk_full_time checks to error log.
This commit is contained in:
parent
2754fd3c80
commit
a1f330a0a2
@ -91,8 +91,9 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||
va_list args;
|
||||
#endif
|
||||
u_char *p, *last, *msg;
|
||||
u_char errstr[NGX_MAX_ERROR_STR];
|
||||
ssize_t n;
|
||||
ngx_uint_t wrote_stderr, debug_connection;
|
||||
u_char errstr[NGX_MAX_ERROR_STR];
|
||||
|
||||
last = errstr + NGX_MAX_ERROR_STR;
|
||||
|
||||
@ -150,16 +151,32 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||
|
||||
if (log->writer) {
|
||||
log->writer(log, level, errstr, p - errstr);
|
||||
log = log->next;
|
||||
continue;
|
||||
goto next;
|
||||
}
|
||||
|
||||
(void) ngx_write_fd(log->file->fd, errstr, p - errstr);
|
||||
if (ngx_time() == log->disk_full_time) {
|
||||
|
||||
/*
|
||||
* on FreeBSD writing to a full filesystem with enabled softupdates
|
||||
* may block process for much longer time than writing to non-full
|
||||
* filesystem, so we skip writing to a log for one second
|
||||
*/
|
||||
|
||||
goto next;
|
||||
}
|
||||
|
||||
n = ngx_write_fd(log->file->fd, errstr, p - errstr);
|
||||
|
||||
if (n == -1 && ngx_errno == NGX_ENOSPC) {
|
||||
log->disk_full_time = ngx_time();
|
||||
}
|
||||
|
||||
if (log->file->fd == ngx_stderr) {
|
||||
wrote_stderr = 1;
|
||||
}
|
||||
|
||||
next:
|
||||
|
||||
log = log->next;
|
||||
}
|
||||
|
||||
|
@ -53,6 +53,8 @@ struct ngx_log_s {
|
||||
|
||||
ngx_atomic_uint_t connection;
|
||||
|
||||
time_t disk_full_time;
|
||||
|
||||
ngx_log_handler_pt handler;
|
||||
void *data;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user