diff --git a/src/core/nginx.c b/src/core/nginx.c
index 920b601..236a65b 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -95,6 +95,8 @@
 
 ngx_uint_t  ngx_max_module;
 
+ngx_uint_t  ngx_use_stderr;
+
 
 int main(int argc, char *const *argv)
 {
@@ -116,9 +118,10 @@
     ngx_regex_init();
 #endif
 
-    log = ngx_log_init_errlog();
     ngx_pid = ngx_getpid();
 
+    log = ngx_log_init_errlog();
+
 #if (NGX_OPENSSL)
     ngx_ssl_init(log);
 #endif
@@ -133,10 +136,6 @@
     ctx.argc = argc;
     ctx.argv = argv;
 
-    if (ngx_os_init(log) == NGX_ERROR) {
-        return 1;
-    }
-
     if (!(init_cycle.pool = ngx_create_pool(1024, log))) {
         return 1;
     }
@@ -145,6 +144,14 @@
         return 1;
     }
 
+    if (ngx_use_stderr) {
+        log = ngx_log_init_errlog();
+    }
+
+    if (ngx_os_init(log) == NGX_ERROR) {
+        return 1;
+    }
+
     if (ngx_add_inherited_sockets(&init_cycle) == NGX_ERROR) {
         return 1;
     }
@@ -319,6 +326,10 @@
             ngx_test_config = 1;
             break;
 
+        case 's':
+            ngx_use_stderr = 1;
+            break;
+
         case 'c':
             if (ctx->argv[i + 1] == NULL) {
                 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index b23d8bb..be899e3 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -259,6 +259,8 @@
 
 ngx_log_t *ngx_log_init_errlog()
 {
+    ngx_fd_t  fd;
+
 #if (WIN32)
 
     ngx_stderr.fd = GetStdHandle(STD_ERROR_HANDLE);
@@ -283,7 +285,37 @@
 #endif
 
     ngx_log.file = &ngx_stderr;
-    ngx_log.log_level = NGX_LOG_INFO;
+    ngx_log.log_level = NGX_LOG_ERR;
+
+#if 0
+    fd = ngx_open_file(NGX_ERROR_LOG_PATH, NGX_FILE_RDWR,
+                       NGX_FILE_CREATE_OR_OPEN|NGX_FILE_APPEND);
+
+    if (fd == NGX_INVALID_FILE) {
+        ngx_log_error(NGX_LOG_EMERG, (&ngx_log), ngx_errno,
+                      ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed");
+        return NULL;
+    }
+
+#if (WIN32)
+
+    if (ngx_file_append_mode(fd) == NGX_ERROR) {
+        ngx_log_error(NGX_LOG_EMERG, (&ngx_log), ngx_errno,
+                      ngx_file_append_mode_n " \"" NGX_ERROR_LOG_PATH
+                      "\" failed");
+        return NULL;
+    }
+
+#else
+
+    if (dup2(fd, STDERR_FILENO) == NGX_ERROR) {
+        ngx_log_error(NGX_LOG_EMERG, (&ngx_log), ngx_errno,
+                      "dup2(STDERR) failed");
+        return NULL;
+    }
+
+#endif
+#endif
 
     return &ngx_log;
 }
