randy       97/08/26 22:45:41

  Modified:    src      CHANGES
               src/main http_config.c http_core.c http_log.c http_log.h
                        httpd.h
  Log:
  Backoff aplog_error() to be configureable on a per-server basis.
  Attempt to fix portability issues with syslog().
  Convert existing log functions to wrappers for aplog_error().
  Add #ifdef USE_SYSLOG
  
  Revision  Changes    Path
  1.423     +1 -1      apachen/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/CHANGES,v
  retrieving revision 1.422
  retrieving revision 1.423
  diff -u -r1.422 -r1.423
  --- CHANGES   1997/08/27 01:12:18     1.422
  +++ CHANGES   1997/08/27 05:45:14     1.423
  @@ -22,7 +22,7 @@
     *) Add aplog_error() providing a mechanism to define levels of
        verbosity to the server error logging. This addition also provides
        the ablity to log errors using syslogd. Error logging is configurable
  -     on a per-directory basis using the LogLevel directive. Conversion
  +     on a per-server basis using the LogLevel directive. Conversion
        of log_*() in progress. [Randy Terbush]
   
     *) Canonicalise filenames under Win32. Short filenames are
  
  
  
  1.77      +3 -0      apachen/src/main/http_config.c
  
  Index: http_config.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/http_config.c,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- http_config.c     1997/08/26 00:00:54     1.76
  +++ http_config.c     1997/08/27 05:45:34     1.77
  @@ -1081,6 +1081,8 @@
       s->keep_alive = -1;
       s->keep_alive_max = -1;
       s->error_log = main_server->error_log;
  +    s->loglevel = main_server->loglevel;
  +    
       /* start the list of addreses */
       addrs = &s->addrs;
       while( hostname[0] ) {
  @@ -1201,6 +1203,7 @@
       s->server_hostname = NULL; 
       s->error_fname = DEFAULT_ERRORLOG;
       s->error_log = stderr;
  +    s->loglevel = DEFAULT_LOGLEVEL;
       s->srm_confname = RESOURCE_CONFIG_FILE;
       s->access_confname = ACCESS_CONFIG_FILE;
       s->timeout = DEFAULT_TIMEOUT;
  
  
  
  1.115     +10 -12    apachen/src/main/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/http_core.c,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- http_core.c       1997/08/25 02:00:38     1.114
  +++ http_core.c       1997/08/27 05:45:35     1.115
  @@ -130,8 +130,6 @@
       conf->limit_nproc = NULL;
   #endif
   
  -    conf->loglevel = DEFAULT_LOGLEVEL;
  -    
       conf->sec = make_array (a, 2, sizeof(void *));
   
       return (void *)conf;
  @@ -1374,27 +1372,27 @@
       return NULL;
   }
   
  -const char *set_loglevel (cmd_parms *cmd, core_dir_config *conf, const char 
*arg) 
  +const char *set_loglevel (cmd_parms *cmd, void *dummy, const char *arg) 
   {
      char *str;
       
      if ((str = getword_conf(cmd->pool, &arg))) {
          if (!strcasecmp(str, "emerg"))
  -        conf->loglevel = APLOG_EMERG;
  +        cmd->server->loglevel = APLOG_EMERG;
          else if (!strcasecmp(str, "alert"))
  -        conf->loglevel = APLOG_ALERT;
  +        cmd->server->loglevel = APLOG_ALERT;
          else if (!strcasecmp(str, "crit"))
  -        conf->loglevel = APLOG_CRIT;
  +        cmd->server->loglevel = APLOG_CRIT;
          else if (!strcasecmp(str, "error"))
  -        conf->loglevel = APLOG_ERR;
  +        cmd->server->loglevel = APLOG_ERR;
          else if (!strcasecmp(str, "warn"))
  -        conf->loglevel = APLOG_WARNING;
  +        cmd->server->loglevel = APLOG_WARNING;
          else if (!strcasecmp(str, "notice"))
  -        conf->loglevel = APLOG_NOTICE;
  +        cmd->server->loglevel = APLOG_NOTICE;
          else if (!strcasecmp(str, "info"))
  -        conf->loglevel = APLOG_INFO;
  +        cmd->server->loglevel = APLOG_INFO;
          else if (!strcasecmp(str, "debug"))
  -        conf->loglevel = APLOG_DEBUG;
  +        cmd->server->loglevel = APLOG_DEBUG;
      }
      else
          return "LogLevel requires level keyword";
  @@ -1528,7 +1526,7 @@
   { "ListenBacklog", set_listenbacklog, NULL, RSRC_CONF, TAKE1, "maximum 
length of the queue of pending connections, as used by listen(2)" },
   { "CoreDumpDirectory", set_coredumpdir, NULL, RSRC_CONF, TAKE1, "The 
location of the directory Apache changes to before dumping core" },
   { "Include", include_config, NULL, RSRC_CONF, TAKE1, "config file to be 
included" },
  -{ "LogLevel", set_loglevel, (void*)XtOffsetOf(core_dir_config, loglevel), 
OR_ALL, TAKE1, "set level of verbosity in error logging" },
  +{ "LogLevel", set_loglevel, NULL, RSRC_CONF, TAKE1, "set level of verbosity 
in error logging" },
   { NULL },
   };
   
  
  
  
  1.26      +44 -63    apachen/src/main/http_log.c
  
  Index: http_log.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/http_log.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- http_log.c        1997/08/25 14:53:39     1.25
  +++ http_log.c        1997/08/27 05:45:36     1.26
  @@ -65,6 +65,8 @@
   #include "http_log.h"
   
   #include <stdarg.h>
  +
  +#ifdef USE_SYSLOG
   #include <syslog.h>
   
   static TRANS facilities[] = {
  @@ -94,6 +96,7 @@
       {"local7",       LOG_LOCAL7},
       {NULL,           -1},
   };
  +#endif
   
   static TRANS priorities[] = {
       {"emerg",        APLOG_EMERG},
  @@ -151,6 +154,7 @@
   
        s->error_log = dummy;
       }
  +#ifdef USE_SYSLOG
       else if (!strncasecmp(s->error_fname, "syslog", 6)) {
        if ((fname = strchr(s->error_fname, ':'))) {
            fname++;
  @@ -167,6 +171,7 @@
   
        s->error_log = NULL;
       }
  +#endif
       else {
        fname = server_root_relative (p, s->error_fname);
           if(!(s->error_log = pfopen(p, fname, "a"))) {
  @@ -204,63 +209,55 @@
   }
   
   API_EXPORT(void) aplog_error (const char *file, int line, int level,
  -                           const request_rec *r, const char *fmt, ...)
  +                           const server_rec *s, const char *fmt, ...)
   {
  -    core_dir_config *conf;
       va_list args;
       char errstr[MAX_STRING_LEN];
       static TRANS *pname = priorities;
       
   
  -    if (r != NULL) { /* backward compatibilty for historic logging functions 
*/
  -     conf = get_module_config(r->per_dir_config, &core_module);
  +    if (level > s->loglevel)
  +     return;
   
  -     if (level > conf->loglevel)
  -         return;
  -
  -     switch (conf->loglevel) {
  -     case APLOG_DEBUG:
  -         ap_snprintf(errstr, sizeof(errstr), "[%s] %d: %s: %s: %d: ",
  -                     pname[level].t_name, errno, strerror(errno), file, 
line);
  -         break;
  -     case APLOG_EMERG:
  -     case APLOG_CRIT:
  -     case APLOG_ALERT:
  -         ap_snprintf(errstr, sizeof(errstr), "[%s] %d: %s: ",
  -                     pname[level].t_name, errno, strerror(errno));
  -         break;
  -     case APLOG_INFO:
  -     case APLOG_ERR:
  -     case APLOG_WARNING:
  -     case APLOG_NOTICE:
  -         ap_snprintf(errstr, sizeof(errstr), "[%s]", pname[level].t_name);
  -         break;
  -     }
  +    switch (s->loglevel) {
  +    case APLOG_DEBUG:
  +     ap_snprintf(errstr, sizeof(errstr), "[%s] %d: %s: %s: %d: ",
  +                 pname[level].t_name, errno, strerror(errno), file, line);
  +     break;
  +    case APLOG_EMERG:
  +    case APLOG_CRIT:
  +    case APLOG_ALERT:
  +     ap_snprintf(errstr, sizeof(errstr), "[%s] %d: %s: ",
  +                 pname[level].t_name, errno, strerror(errno));
  +     break;
  +    case APLOG_INFO:
  +    case APLOG_ERR:
  +    case APLOG_WARNING:
  +    case APLOG_NOTICE:
  +     ap_snprintf(errstr, sizeof(errstr), "[%s] ", pname[level].t_name);
  +     break;
       }
  -    else
  -     ap_snprintf(errstr, sizeof(errstr), "[%s]", pname[level].t_name);
        
       va_start(args, fmt);
   
       /* NULL if we are logging to syslog */
  -    if (r->server->error_log) {
  -     fprintf(r->server->error_log, "[%s] %s", get_time(), errstr);
  -     vfprintf(r->server->error_log, fmt, args);
  -     fflush(r->server->error_log);
  +    if (s->error_log) {
  +     fprintf(s->error_log, "[%s] %s", get_time(), errstr);
  +     vfprintf(s->error_log, fmt, args);
  +     fflush(s->error_log);
       }
  -#ifdef NOTYET
  +#ifdef USE_SYSLOG
       else {
  -     if (errstr)
  -         syslog(level, "%s", errstr);
  -
  -     vsyslog(level, fmt, args);
  +     vsprintf(errstr + strlen(errstr), fmt, args);
  +     syslog(level, "%s", errstr);
       }
   #endif
       
       va_end(args);
   }
   
  -void log_pid (pool *p, char *pid_fname) {
  +void log_pid (pool *p, char *pid_fname)
  +{
       FILE *pid_file;
   
       if (!pid_fname) return;
  @@ -276,49 +273,33 @@
   
   API_EXPORT(void) log_error (const char *err, server_rec *s)
   {
  -    fprintf(s->error_log, "[%s] %s\n",get_time(),err);
  -    fflush(s->error_log);
  +    aplog_error(APLOG_MARK, APLOG_ERR, s, err);
   }
   
   API_EXPORT(void) log_unixerr (const char *routine, const char *file,
                              const char *msg, server_rec *s)
   {
  -    const char *p, *q;
  -    FILE *err=s ? s->error_log : stderr;
  -
  -    p = strerror(errno);
  -    q = get_time();
  -
  -    if (file != NULL)
  -     fprintf(err, "[%s] %s: %s: %s\n", q, routine, file, p);
  -    else
  -     fprintf(err, "[%s] %s: %s\n", q, routine, p);
  -    if (msg != NULL) fprintf(s->error_log, "[%s] - %s\n", q, msg);
  -
  -    fflush(err);
  +    aplog_error(file, 0, APLOG_ERR, s, msg);
   }
   
   API_EXPORT(void) log_printf (const server_rec *s, const char *fmt, ...)
   {
  +    char buf[MAX_STRING_LEN];
       va_list args;
       
  -    fprintf(s->error_log, "[%s] ", get_time());
       va_start(args, fmt);
  -    vfprintf(s->error_log, fmt, args);
  +    vsprintf(buf, fmt, args);
  +    aplog_error(APLOG_MARK, APLOG_ERR, s, buf);
       va_end(args);
  -
  -    fputc('\n', s->error_log);
  -    fflush(s->error_log);
   }
   
   API_EXPORT(void) log_reason (const char *reason, const char *file, 
request_rec *r) 
   {
  -    fprintf(r->server->error_log,
  -         "[%s] access to %s failed for %s, reason: %s\n",
  -         get_time(), file,
  -         get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME),
  -         reason);
  -    fflush(r->server->error_log);
  +    aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +             "access to %s failed for %s, reason: %s\n",
  +             file,
  +             get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME),
  +             reason);
   }
   
   API_EXPORT(void) log_assert (const char *szExp, const char *szFile, int 
nLine)
  
  
  
  1.12      +1 -1      apachen/src/main/http_log.h
  
  Index: http_log.h
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/http_log.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- http_log.h        1997/08/25 02:00:40     1.11
  +++ http_log.h        1997/08/27 05:45:37     1.12
  @@ -68,7 +68,7 @@
   
   void open_logs (server_rec *, pool *p);
   API_EXPORT(void) aplog_error(const char *file, int line, int level,
  -                          const request_rec *r, const char *fmt, ...);
  +                          const server_rec *s, const char *fmt, ...);
   API_EXPORT(void) error_log2stderr (server_rec *);     
   
   void log_pid (pool *p, char *fname);
  
  
  
  1.146     +2 -1      apachen/src/main/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/httpd.h,v
  retrieving revision 1.145
  retrieving revision 1.146
  diff -u -r1.145 -r1.146
  --- httpd.h   1997/08/25 17:10:18     1.145
  +++ httpd.h   1997/08/27 05:45:37     1.146
  @@ -723,7 +723,8 @@
     
       char *error_fname;
       FILE *error_log;
  -  
  +    int loglevel;
  +    
       /* Module-specific configuration for server, and defaults... */
   
       int is_virtual;             /* true if this is the virtual server */
  
  
  

Reply via email to