diff --git a/src/core/nginx.c b/src/core/nginx.c
index 796717a..4cc8082 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -387,13 +387,8 @@
         return 1;
     }
 
-    if (!cycle->log_use_stderr && cycle->log->file->fd != ngx_stderr) {
-
-        if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
-            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                          ngx_set_stderr_n " failed");
-            return 1;
-        }
+    if (ngx_log_redirect_stderr(cycle) != NGX_OK) {
+        return 1;
     }
 
     if (log->file->fd != ngx_stderr) {
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 44edbaf..2c006bc 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -36,8 +36,6 @@
 static ngx_connection_t  dumb;
 /* STUB */
 
-static ngx_str_t  error_log = ngx_string(NGX_ERROR_LOG_PATH);
-
 
 ngx_cycle_t *
 ngx_init_cycle(ngx_cycle_t *old_cycle)
@@ -338,13 +336,8 @@
     }
 
 
-    if (cycle->new_log.file == NULL) {
-        cycle->new_log.file = ngx_conf_open_file(cycle, &error_log);
-        if (cycle->new_log.file == NULL) {
-            goto failed;
-        }
-
-        cycle->new_log.log_level = NGX_LOG_ERR;
+    if (ngx_log_open_default(cycle) != NGX_OK) {
+        goto failed;
     }
 
     /* open the new files */
@@ -583,13 +576,8 @@
 
     /* commit the new cycle configuration */
 
-    if (!ngx_use_stderr && !cycle->log_use_stderr
-        && cycle->log->file->fd != ngx_stderr)
-    {
-        if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
-            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
-                          ngx_set_stderr_n " failed");
-        }
+    if (!ngx_use_stderr) {
+        (void) ngx_log_redirect_stderr(cycle);
     }
 
     pool->log = cycle->log;
@@ -1230,13 +1218,7 @@
         file[i].fd = fd;
     }
 
-    if (!cycle->log_use_stderr && cycle->log->file->fd != ngx_stderr) {
-
-        if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
-            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
-                          ngx_set_stderr_n " failed");
-        }
-    }
+    (void) ngx_log_redirect_stderr(cycle);
 }
 
 
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index b35a432..edf3004 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -363,6 +363,48 @@
 }
 
 
+ngx_int_t
+ngx_log_open_default(ngx_cycle_t *cycle)
+{
+    static ngx_str_t  error_log = ngx_string(NGX_ERROR_LOG_PATH);
+
+    if (cycle->new_log.file == NULL) {
+        cycle->new_log.file = ngx_conf_open_file(cycle, &error_log);
+        if (cycle->new_log.file == NULL) {
+            return NGX_ERROR;
+        }
+
+        cycle->new_log.log_level = NGX_LOG_ERR;
+    }
+
+    return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_log_redirect_stderr(ngx_cycle_t *cycle)
+{
+    ngx_fd_t  fd;
+
+    if (cycle->log_use_stderr) {
+        return NGX_OK;
+    }
+
+    fd = cycle->log->file->fd;
+
+    if (fd != ngx_stderr) {
+        if (ngx_set_stderr(fd) == NGX_FILE_ERROR) {
+            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
+                          ngx_set_stderr_n " failed");
+
+            return NGX_ERROR;
+        }
+    }
+
+    return NGX_OK;
+}
+
+
 static char *
 ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log)
 {
diff --git a/src/core/ngx_log.h b/src/core/ngx_log.h
index 82e1e24..878fb0a 100644
--- a/src/core/ngx_log.h
+++ b/src/core/ngx_log.h
@@ -225,6 +225,8 @@
 void ngx_cdecl ngx_log_abort(ngx_err_t err, const char *fmt, ...);
 void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
 u_char *ngx_log_errno(u_char *buf, u_char *last, ngx_err_t err);
+ngx_int_t ngx_log_open_default(ngx_cycle_t *cycle);
+ngx_int_t ngx_log_redirect_stderr(ngx_cycle_t *cycle);
 char *ngx_log_set_log(ngx_conf_t *cf, ngx_log_t **head);
 
 
