Author: mturk Date: Fri Sep 1 11:05:44 2006 New Revision: 439403 URL: http://svn.apache.org/viewvc?rev=439403&view=rev Log: Add option to log the jvmRoute (real worker used in load balancer) and allow logging request even if the gettimeofday function is missing. The %T will show - in that case.
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=439403&r1=439402&r2=439403&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Fri Sep 1 11:05:44 2006 @@ -63,6 +63,7 @@ #define JK_NOTE_WORKER_NAME ("JK_WORKER_NAME") #define JK_NOTE_WORKER_TYPE ("JK_WORKER_TYPE") #define JK_NOTE_REQUEST_DURATION ("JK_REQUEST_DURATION") +#define JK_NOTE_WORKER_ROUTE ("JK_WORKER_ROUTE") #define JK_HANDLER ("jakarta-servlet") #define JK_MAGIC_TYPE ("application/x-jakarta-servlet") #define NULL_FOR_EMPTY(x) ((x && !strlen(x)) ? NULL : x) @@ -490,7 +491,7 @@ (char *)ap_get_remote_host(r->connection, r->per_dir_config, REMOTE_HOST); s->remote_host = NULL_FOR_EMPTY(s->remote_host); - + if (conf->options & JK_OPT_FWDLOCAL) s->remote_addr = NULL_FOR_EMPTY(r->connection->local_ip); else @@ -1104,6 +1105,10 @@ return ap_table_get(r->notes, JK_NOTE_WORKER_NAME); } +static const char *log_worker_route(request_rec * r, char *a) +{ + return ap_table_get(r->notes, JK_NOTE_WORKER_ROUTE); +} static const char *log_request_duration(request_rec * r, char *a) { @@ -1218,6 +1223,7 @@ 'm', log_request_method}, { 'q', log_request_query}, { 'w', log_worker_name}, { + 'R', log_worker_route}, { '\0'} }; @@ -1822,10 +1828,10 @@ } } } -#ifndef NO_GETTIMEOFDAY if (conf->format != NULL) { - char *duration = NULL; +#ifndef NO_GETTIMEOFDAY long micro, seconds; + char *duration = NULL; gettimeofday(&tv_end, NULL); if (tv_end.tv_usec < tv_begin.tv_usec) { tv_end.tv_usec += 1000000; @@ -1836,9 +1842,11 @@ duration = ap_psprintf(r->pool, "%.1ld.%.6ld", seconds, micro); ap_table_setn(r->notes, JK_NOTE_REQUEST_DURATION, duration); +#endif + if (s.jvm_route && *s.jvm_route) + ap_table_setn(r->notes, JK_NOTE_WORKER_ROUTE, s.jvm_route); request_log_transaction(r, conf); } -#endif } else { jk_log(l, JK_LOG_ERROR, "Could not init service" @@ -1863,7 +1871,7 @@ if (JK_IS_DEBUG_LEVEL(l)) jk_log(l, JK_LOG_DEBUG, "Service finished" " with status=%d for worker=%s", - r->status, worker_name); + r->status, worker_name); JK_TRACE_EXIT(l); return OK; /* NOT r->status, even if it has changed. */ } @@ -2029,7 +2037,7 @@ int level, const char *what) { if (l && - (l->level <= level || level == JK_LOG_REQUEST_LEVEL) && + (l->level <= level || level == JK_LOG_REQUEST_LEVEL) && l->logger_private && what) { file_logger_t *flp = l->logger_private; int log_fd = flp->log_fd; @@ -2126,7 +2134,7 @@ "Using default %s", jk_shm_file); } #endif - + if ((rc = jk_shm_open(jk_shm_file, jk_shm_size, conf->log)) == 0) { if (JK_IS_DEBUG_LEVEL(conf->log)) jk_log(conf->log, JK_LOG_DEBUG, "Initialized shm:%s", @@ -2141,7 +2149,7 @@ "No JkShmFile defined in httpd.conf. " "LoadBalancer will not function properly!"); #endif - + /* SREVILAK -- register cleanup handler to clear resources on restart, * to make sure log file gets closed in the parent process */ ap_register_cleanup(p, s, jk_server_cleanup, ap_null_cleanup); @@ -2230,7 +2238,7 @@ r->prev && r->prev->handler && !strcmp(r->prev->handler, JK_HANDLER) && clean_uri && strlen(clean_uri) && clean_uri[strlen(clean_uri) - 1] == '/') { - + if (worker_env.num_of_workers) { /* Nothing here to do but assign the first worker since we * already tried mapping and it didn't work out */ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]