From 0c96068dc42769570088980c7436ba8b9dcf0123 Mon Sep 17 00:00:00 2001 From: Daniel Earl Poirier Date: Tue, 16 Feb 2010 20:50:10 +0000 Subject: [PATCH] Log command line on startup, so there's a record of command line arguments like -f. Suggested by Shaya Potter. [Dan Poirier] PR: 48752 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@910684 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ include/ap_mmn.h | 1 + include/http_log.h | 8 ++++++++ server/log.c | 27 +++++++++++++++++++++++++++ server/mpm/event/event.c | 1 + server/mpm/netware/mpm_netware.c | 1 + server/mpm/prefork/prefork.c | 1 + server/mpm/winnt/mpm_winnt.c | 1 + server/mpm/worker/worker.c | 1 + 9 files changed, 45 insertions(+) diff --git a/CHANGES b/CHANGES index 78ac28e217..93d9eaf7be 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.3.7 + *) Log command line on startup, so there's a record of command line + arguments like -f. + PR 48752. [Dan Poirier] + *) Introduce mod_reflector, a handler capable of reflecting POSTed request bodies back within the response through the output filter stack. Can be used to turn an output filter into a web service. diff --git a/include/ap_mmn.h b/include/ap_mmn.h index b47ed321cb..b87ea2fbe6 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -216,6 +216,7 @@ * 20091230.4 (2.3.6-dev) export ap_process_request_after_handler() for mod_serf * 20100208.0 (2.3.6-dev) ap_socache_provider_t API changes to store and iterate * 20100208.1 (2.3.6-dev) Added forward member to proxy_conn_rec + * 20100215.0 (2.3.7-dev) Added ap_log_command_line(). * */ diff --git a/include/http_log.h b/include/http_log.h index d8d2b02be3..80e8b9fa67 100644 --- a/include/http_log.h +++ b/include/http_log.h @@ -249,6 +249,14 @@ AP_DECLARE(void) ap_log_cerror(const char *file, int line, int level, */ AP_DECLARE(void) ap_error_log2stderr(server_rec *s); +/** + * Log the command line used to start the server. + * @param p The pool to use for logging + * @param s The server_rec whose process's command line we want to log. + * The command line is logged to that server's error log. + */ +AP_DECLARE(void) ap_log_command_line(apr_pool_t *p, server_rec *s); + /** * Log the current pid of the parent process * @param p The pool to use for logging diff --git a/server/log.c b/server/log.c index a0c6995c53..6fd073b812 100644 --- a/server/log.c +++ b/server/log.c @@ -784,6 +784,33 @@ AP_DECLARE(void) ap_log_cerror(const char *file, int line, int level, va_end(args); } +AP_DECLARE(void) ap_log_command_line(apr_pool_t *plog, server_rec *s) +{ + int i; + process_rec *process = s->process; + char *result; + int len_needed = 0; + + /* Piece together the command line from the pieces + * in process->argv, with spaces in between. + */ + for (i = 0; i < process->argc; i++) { + len_needed += strlen(process->argv[i]) + 1; + } + + result = (char *) apr_palloc(plog, len_needed); + *result = '\0'; + + for (i = 0; i < process->argc; i++) { + strcat(result, process->argv[i]); + if ((i+1)< process->argc) { + strcat(result, " "); + } + } + ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, + "Command line: '%s'", result); +} + AP_DECLARE(void) ap_log_pid(apr_pool_t *p, const char *filename) { apr_file_t *pid_file = NULL; diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 36aaa87c6e..85adf0e132 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -2239,6 +2239,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) ap_get_server_description()); ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, "Server built: %s", ap_get_server_built()); + ap_log_command_line(plog, s); restart_pending = shutdown_pending = 0; mpm_state = AP_MPMQ_RUNNING; diff --git a/server/mpm/netware/mpm_netware.c b/server/mpm/netware/mpm_netware.c index 329e7bac74..a809372aa5 100644 --- a/server/mpm/netware/mpm_netware.c +++ b/server/mpm/netware/mpm_netware.c @@ -922,6 +922,7 @@ static int netware_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) ap_get_server_description()); ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, "Server built: %s", ap_get_server_built()); + ap_log_command_line(plog, s); show_server_data(); mpm_state = AP_MPMQ_RUNNING; diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c index 56496cea56..336db7d77a 100644 --- a/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c @@ -971,6 +971,7 @@ static int prefork_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) ap_get_server_description()); ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, "Server built: %s", ap_get_server_built()); + ap_log_command_line(plog, s); ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "Accept mutex: %s (default: %s)", apr_proc_mutex_name(accept_mutex), diff --git a/server/mpm/winnt/mpm_winnt.c b/server/mpm/winnt/mpm_winnt.c index 6cac77a99c..963dd0d1ef 100644 --- a/server/mpm/winnt/mpm_winnt.c +++ b/server/mpm/winnt/mpm_winnt.c @@ -1696,6 +1696,7 @@ static int winnt_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s ) ap_get_server_description()); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, ap_server_conf, "Server built: %s", ap_get_server_built()); + ap_log_command_line(plog, s); restart = master_main(ap_server_conf, shutdown_event, restart_event); diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index 052da59fff..c86d9e8f55 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -1758,6 +1758,7 @@ static int worker_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) ap_get_server_description()); ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, "Server built: %s", ap_get_server_built()); + ap_log_command_line(plog, s); ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "Accept mutex: %s (default: %s)", apr_proc_mutex_name(accept_mutex), -- 2.40.0