Hi Mladen, hi everyone,

i have a proposal for a slight enhancement concerning the log format of
mod_jk. Maybe you could consider including it in your recently revised code. It contains only changes to jk_util.c and I attach a patch relativ to version 1.32 of the file.


1) Include the log level of a message in the log line. That should be
easy and is very helpful to find relevant messages. It is pretty standard and much more safe than relying on the fact, that most error messages actually contain the word error in the message text.


2) Include the PID of the logging process in the log file. That helps a
lot at least for Apache 1.3, because one can also log the PID in Apaches access log. So it is easier to relate request info from access log lines and errors from mod_jk log lines to each other. Also it helps to unmangle, if log lines from several parallel requests are mixed inside mod_jk-log.


The patch is small, but since I'm not a very experienced C developer please check. I borrowed a define for Netware for getpid() from Apache's code. Not sure if it will work for Netware, or if configure needs to be
enhanced, if we use getpid(). It builds well on Solaris.


Thank's for considering.


*** jk_util.c      Tue Jul 13 15:58:10 2004
--- jk_util.c.new  Thu Aug 12 18:11:50 2004
***************
*** 85,90 ****
--- 85,98 ----
  
  const char * jk_log_fmt = JK_TIME_FORMAT;
  
+ int log_level_max = 3;
+ static const char *log_levels[] = {
+     JK_LOG_DEBUG_VERB,
+     JK_LOG_INFO_VERB,
+     JK_LOG_ERROR_VERB,
+     JK_LOG_EMERG_VERB
+ };
+ 
  static void set_time_str(char * str, int len)
  {
      time_t      t = time(NULL);
***************
*** 250,255 ****
--- 258,274 ----
              f++;
          }
  
+         const char *log_level;
+         if ( level >=0 && level <= log_level_max ) {
+             log_level=log_levels[level];
+         } else {
+             log_level="unknown";
+         }
+ 
+ #ifdef NETWARE
+ #define getpid() ((pid_t)GetThreadGroupID())
+ #endif
+ 
  #ifdef USE_SPRINTF /* until we get a snprintf function */
  #ifdef NETWARE
          buf = (char *) malloc(HUGE_BUFFER_SIZE);
***************
*** 256,268 ****
          if (NULL == buf)
             return -1;
  #endif
!     set_time_str(buf, HUGE_BUFFER_SIZE);
!     used = strlen(buf);
          if(line)
              used += sprintf(&buf[used], " [%s (%d)]: ", f, line);
  #else 
!     set_time_str(buf, HUGE_BUFFER_SIZE);
!     used = strlen(buf);
          if(line)
              used += snprintf(&buf[used], HUGE_BUFFER_SIZE, " [%s (%d)]: ", f, 
line);        
  #endif
--- 275,289 ----
          if (NULL == buf)
             return -1;
  #endif
!         set_time_str(buf, HUGE_BUFFER_SIZE);
!         used = strlen(buf);
!         used += sprintf(&buf[used], "[%s] [%ld]", log_level, (long)getpid());
          if(line)
              used += sprintf(&buf[used], " [%s (%d)]: ", f, line);
  #else 
!         set_time_str(buf, HUGE_BUFFER_SIZE);
!         used = strlen(buf);
!         used += snprintf(&buf[used], HUGE_BUFFER_SIZE, "[%s] [%ld]", 
log_level, (long)getpid());
          if(line)
              used += snprintf(&buf[used], HUGE_BUFFER_SIZE, " [%s (%d)]: ", f, 
line);        
  #endif

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to