The following reply was made to PR mod_jserv/3833; it has been noted by GNATS.
From: Philip Guenther <[EMAIL PROTECTED]> To: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED] Cc: Subject: Re: mod_jserv/3833: Error in logfile: "Apache JServ Module was cleaned-up (ap_child)" Date: Fri, 23 Apr 1999 14:44:07 -0500 Hello, I recently installed Apache JServ and found myself annoyed by the continual stream of "Module was cleaned-up" messages, so I added a new directive "ApJServLogLevel". I found the bug referenced above in the problem database, so if you like my patch you can resolve it . Philip Guenther ---------------------------------------------------------------------- [EMAIL PROTECTED] UNIX Systems and Network Administrator Gustavus Adolphus College St. Peter, MN 56082-1498 Source code never lies: it just misleads (Programming by Purloined Letter?) *** Apache-JServ-1.0b3/conf/httpd.conf.in Wed Nov 25 15:09:50 1998 --- ../Apache-JServ-1.0b3/conf/httpd.conf.in Fri Apr 23 10:26:05 1999 *************** *** 27,32 **** --- 27,37 ---- # Note: when set to "DISABLED", the log will be redirected to Apache error log ApJServLogFile ./logs/mod_jserv.log + # Log Level for this module + # Syntax: ApJServLogLevel [debug|info|notice|warn|error|crit|alert|emerg] + # Default: info (unless compiled w/ JSERV_DEBUG, in which case it's debug) + ApJServLogLevel notice + # Protocol used by this host to connect to Apache JServ # (see documentation for more details on available protocols) # Syntax: ApJServDefaultProtocol [name] *** Apache-JServ-1.0b3/src/c/jserv_utils.c Fri Jan 8 13:12:01 1999 --- ../Apache-JServ-1.0b3/src/c/jserv_utils.c Fri Apr 23 10:19:23 1999 *************** *** 267,272 **** --- 267,278 ---- /* Check if we have a valid configuration element */ if (cfg!=NULL) { + #if APLOG_EMERG > APLOG_ERR + if (level < cfg->loglevel) + #else + if (level > cfg->loglevel) + #endif + return; /* Check if jserv log file was opened */ if (cfg->logfilefd>=0) { /* Prepare timestamp */ *************** *** 364,374 **** return "DEBUG"; break; case APLOG_INFO: return "INFO"; break; case APLOG_ERR: return "ERROR"; break; case APLOG_EMERG: return "EMERGENCY"; break; } return "UNKNOWN"; } - --- 370,387 ---- return "DEBUG"; break; case APLOG_INFO: return "INFO"; break; + case APLOG_NOTICE: + return "NOTICE"; break; + case APLOG_WARNING: + return "WARNING"; break; case APLOG_ERR: return "ERROR"; break; + case APLOG_CRIT: + return "CRITICAL"; break; + case APLOG_ALERT: + return "ALERT"; break; case APLOG_EMERG: return "EMERGENCY"; break; } return "UNKNOWN"; } *** Apache-JServ-1.0b3/src/c/mod_jserv.c Thu Feb 18 03:58:38 1999 --- ../Apache-JServ-1.0b3/src/c/mod_jserv.c Fri Apr 23 10:44:08 1999 *************** *** 274,279 **** --- 274,284 ---- cfg->logfilefd=JSERV_DEFAULT; } + /* Check ApJServLogLevel */ + if (cfg->loglevel==JSERV_DEFAULT) { + cfg->loglevel=APLOG_DEBUG; + } + /* Check file descriptor for ApJServLogFile */ if (cfg->logfilefd==JSERV_DEFAULT) { const char *buf=jserv_openfile(p, cfg->logfile, JSERV_TRUE, *************** *** 307,312 **** --- 312,318 ---- cfg->mountcopy=JSERV_DEFAULT; cfg->logfile=NULL; cfg->logfilefd=JSERV_DEFAULT; + cfg->loglevel=JSERV_DEFAULT; cfg->secretfile=NULL; cfg->secret=NULL; cfg->secretsize=JSERV_DEFAULT; *************** *** 375,380 **** --- 381,392 ---- cfg->logfilefd=base->logfilefd; } + /* ApJServLogLevel merging */ + if (override->loglevel!=JSERV_DEFAULT) + cfg->loglevel=override->loglevel; + else + cfg->loglevel=base->loglevel; + /* ApJServSecretKey merging */ if (override->secretfile!=NULL) { cfg->secretfile=override->secretfile; *************** *** 1026,1031 **** --- 1038,1098 ---- } /* ========================================================================= */ + /* Handle ApJServLogLevel directive (TAKE1) */ + static const char *jserv_cfg_loglevel(cmd_parms *cmd, void *dummy, + char *value) { + server_rec *s = cmd->server; + jserv_config *cfg = jserv_server_config_get(s); + const char *ret, *str; + + ret = NULL; + + /* Check if we already processed ApJServLogLevel directives */ + if (cfg->loglevel!=JSERV_DEFAULT) + ret = "cannot be specified more than once per host"; + /* code stolen from http_core.c */ + else if ((str = ap_getword_conf_nc(cmd->pool, &value))) { + if (!strcasecmp(str, "emerg")) { + cfg->loglevel = APLOG_EMERG; + } + else if (!strcasecmp(str, "alert")) { + cfg->loglevel = APLOG_ALERT; + } + else if (!strcasecmp(str, "crit")) { + cfg->loglevel = APLOG_CRIT; + } + else if (!strcasecmp(str, "error")) { + cfg->loglevel = APLOG_ERR; + } + else if (!strcasecmp(str, "warn")) { + cfg->loglevel = APLOG_WARNING; + } + else if (!strcasecmp(str, "notice")) { + cfg->loglevel = APLOG_NOTICE; + } + else if (!strcasecmp(str, "info")) { + cfg->loglevel = APLOG_INFO; + } + else if (!strcasecmp(str, "debug")) { + cfg->loglevel = APLOG_DEBUG; + } + else { + ret = "ApJServLogLevel requires level keyword: one of " + "emerg/alert/crit/error/warn/notice/info/debug"; + } + } + else { + ret = "ApJServLogLevel requires level keyword"; + } + + /* If ret is not null, an error occourred and ret points to message */ + if (ret!=NULL) + return ap_pstrcat(cmd->pool, cmd->cmd->name, ": ", ret, NULL); + return NULL; + } + + + /* ========================================================================= */ /* Handle ApJServSecretKey directive (TAKE1) */ static const char *jserv_cfg_secretkey(cmd_parms *cmd, void *dummy, char *value) { *************** *** 1443,1448 **** --- 1510,1517 ---- "Whether <VirtualHost> inherits base host mount points or not."}, {"ApJServLogFile", jserv_cfg_logfile, NULL, RSRC_CONF, TAKE1, "Apache JServ log file relative to Apache root directory."}, + {"ApJServLogLevel", jserv_cfg_loglevel, NULL, RSRC_CONF, TAKE1, + "Apache JServ log verbosity."}, {"ApJServSecretKey", jserv_cfg_secretkey, NULL, RSRC_CONF, TAKE1, "Apache JServ secret key file relative to Apache root directory."}, {"ApJServProtocolParameter", jserv_cfg_parameter, NULL, RSRC_CONF, TAKE23,