]> granicus.if.org Git - apache/commitdiff
Log command line on startup, so there's a record of command line
authorDaniel Earl Poirier <poirier@apache.org>
Tue, 16 Feb 2010 20:50:10 +0000 (20:50 +0000)
committerDaniel Earl Poirier <poirier@apache.org>
Tue, 16 Feb 2010 20:50:10 +0000 (20:50 +0000)
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
include/ap_mmn.h
include/http_log.h
server/log.c
server/mpm/event/event.c
server/mpm/netware/mpm_netware.c
server/mpm/prefork/prefork.c
server/mpm/winnt/mpm_winnt.c
server/mpm/worker/worker.c

diff --git a/CHANGES b/CHANGES
index 78ac28e217f11659dfbec0cac2258d177f6dbc96..93d9eaf7be9e5df8d6239ba45e98b5b9d40b7004 100644 (file)
--- 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.
index b47ed321cba1bdd3cb2912cfd4b11d3acdb9de3d..b87ea2fbe6ddfea0afc8bdedbcd5c8b8b4fc4c3f 100644 (file)
  * 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().
  *
  */
 
index d8d2b02be3a281ea313074b43f1809c89b742d59..80e8b9fa679ac68aef3e2f70d2899dad157036ba 100644 (file)
@@ -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
index a0c6995c5352fff5474172137311205bf9496a57..6fd073b81260abc1f214cb8f6846f64c0a568216 100644 (file)
@@ -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;
index 36aaa87c6ede906d36045200e42ee0510eab05d4..85adf0e1321f77249573f289710d16781c273d1d 100644 (file)
@@ -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;
index 329e7bac744afb50ed56e7daab96f977b1d2d77f..a809372aa5935cf87e9c6f1b74c2b1090fc8663e 100644 (file)
@@ -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;
index 56496cea565b42b2d2d7091b888b4b57e57d8e67..336db7d77aab6b3aca5f68817695c7e2085ed064 100644 (file)
@@ -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),
index 6cac77a99cab37ab5cf91195d40fbfde968c8f28..963dd0d1efdf8b9c3e4bd6ad08b512c09ed298f7 100644 (file)
@@ -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);
 
index 052da59fff2fc72aede620dbe946ef9afcb9b4d5..c86d9e8f55e84e16be9dd100bbb02207a9edcacc 100644 (file)
@@ -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),