mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -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;
|
va_list args;
|
||||||
#endif
|
#endif
|
||||||
u_char *p, *last, *msg;
|
u_char *p, *last, *msg;
|
||||||
u_char errstr[NGX_MAX_ERROR_STR];
|
ssize_t n;
|
||||||
ngx_uint_t wrote_stderr, debug_connection;
|
ngx_uint_t wrote_stderr, debug_connection;
|
||||||
|
u_char errstr[NGX_MAX_ERROR_STR];
|
||||||
|
|
||||||
last = 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) {
|
if (log->writer) {
|
||||||
log->writer(log, level, errstr, p - errstr);
|
log->writer(log, level, errstr, p - errstr);
|
||||||
log = log->next;
|
goto next;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(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) {
|
if (log->file->fd == ngx_stderr) {
|
||||||
wrote_stderr = 1;
|
wrote_stderr = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
next:
|
||||||
|
|
||||||
log = log->next;
|
log = log->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,8 @@ struct ngx_log_s {
|
|||||||
|
|
||||||
ngx_atomic_uint_t connection;
|
ngx_atomic_uint_t connection;
|
||||||
|
|
||||||
|
time_t disk_full_time;
|
||||||
|
|
||||||
ngx_log_handler_pt handler;
|
ngx_log_handler_pt handler;
|
||||||
void *data;
|
void *data;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user