aboutsummaryrefslogtreecommitdiff
path: root/src/core/nginx.c
diff options
context:
space:
mode:
authorIgor Ippolitov <iippolitov@nginx.com>2020-11-19 16:59:00 +0000
committerIgor Ippolitov <iippolitov@nginx.com>2020-11-19 16:59:00 +0000
commit7e1637a31631955aec753365c7149c64b216d47e (patch)
tree6472e10441473f30e95bd0b64a39b2335e308699 /src/core/nginx.c
parent23597e97f52316ef024796c5f1b5ca0d70ecff31 (diff)
downloadnginx-7e1637a31631955aec753365c7149c64b216d47e.tar.gz
nginx-7e1637a31631955aec753365c7149c64b216d47e.zip
Core: "-e" command line option.
When installing or running from a non-root user it is sometimes required to override default, compiled in error log path. There was no way to do this without rebuilding the binary (ticket #147). This patch introduced "-e" command line option which allows one to override compiled in error log path.
Diffstat (limited to 'src/core/nginx.c')
-rw-r--r--src/core/nginx.c41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/core/nginx.c b/src/core/nginx.c
index f73e5598e..48a20e9fd 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -183,6 +183,7 @@ static ngx_uint_t ngx_show_help;
static ngx_uint_t ngx_show_version;
static ngx_uint_t ngx_show_configure;
static u_char *ngx_prefix;
+static u_char *ngx_error_log;
static u_char *ngx_conf_file;
static u_char *ngx_conf_params;
static char *ngx_signal;
@@ -230,7 +231,7 @@ main(int argc, char *const *argv)
ngx_pid = ngx_getpid();
ngx_parent = ngx_getppid();
- log = ngx_log_init(ngx_prefix);
+ log = ngx_log_init(ngx_prefix, ngx_error_log);
if (log == NULL) {
return 1;
}
@@ -393,9 +394,9 @@ ngx_show_version_info(void)
if (ngx_show_help) {
ngx_write_stderr(
- "Usage: nginx [-?hvVtTq] [-s signal] [-c filename] "
- "[-p prefix] [-g directives]" NGX_LINEFEED
- NGX_LINEFEED
+ "Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]" NGX_LINEFEED
+ " [-e filename] [-c filename] [-g directives]"
+ NGX_LINEFEED NGX_LINEFEED
"Options:" NGX_LINEFEED
" -?,-h : this help" NGX_LINEFEED
" -v : show version and exit" NGX_LINEFEED
@@ -414,6 +415,12 @@ ngx_show_version_info(void)
#else
" -p prefix : set prefix path (default: NONE)" NGX_LINEFEED
#endif
+ " -e filename : set error log file (default: "
+#ifdef NGX_ERROR_LOG_STDERR
+ "stderr)" NGX_LINEFEED
+#else
+ NGX_ERROR_LOG_PATH ")" NGX_LINEFEED
+#endif
" -c filename : set configuration file (default: " NGX_CONF_PATH
")" NGX_LINEFEED
" -g directives : set global directives out of configuration "
@@ -800,6 +807,24 @@ ngx_get_options(int argc, char *const *argv)
ngx_log_stderr(0, "option \"-p\" requires directory name");
return NGX_ERROR;
+ case 'e':
+ if (*p) {
+ ngx_error_log = p;
+
+ } else if (argv[++i]) {
+ ngx_error_log = (u_char *) argv[i];
+
+ } else {
+ ngx_log_stderr(0, "option \"-e\" requires file name");
+ return NGX_ERROR;
+ }
+
+ if (ngx_strcmp(ngx_error_log, "stderr") == 0) {
+ ngx_error_log = (u_char *) "";
+ }
+
+ goto next;
+
case 'c':
if (*p) {
ngx_conf_file = p;
@@ -992,6 +1017,14 @@ ngx_process_options(ngx_cycle_t *cycle)
}
}
+ if (ngx_error_log) {
+ cycle->error_log.len = ngx_strlen(ngx_error_log);
+ cycle->error_log.data = ngx_error_log;
+
+ } else {
+ ngx_str_set(&cycle->error_log, NGX_ERROR_LOG_PATH);
+ }
+
if (ngx_conf_params) {
cycle->conf_param.len = ngx_strlen(ngx_conf_params);
cycle->conf_param.data = ngx_conf_params;