static void json_trace(int errlevel, const char *fmt, ...) /* assemble command in printf(3) style */ { if (errlevel <= debuglevel && NULL != debugfp) { char buf[BUFSIZ] = {0}; va_list ap; (void)strlcpy(buf, "json: ", sizeof(buf)); va_start(ap, fmt); str_vappendf(buf, sizeof(buf), fmt, ap); va_end(ap); (void)fputs(buf, debugfp); } }
void libgps_trace(int errlevel, const char *fmt, ...) /* assemble command in printf(3) style */ { if (errlevel <= libgps_debuglevel) { char buf[BUFSIZ]; va_list ap; (void)strlcpy(buf, "libgps: ", sizeof(buf)); va_start(ap, fmt); str_vappendf(buf, sizeof(buf), fmt, ap); va_end(ap); (void)fputs(buf, debugfp); } }
void WOLog(int level, const char *format, ...) { FILE *log; va_list ap; int do_it; #if defined(TIMESTAMP_LOG_MESSAGES) struct tm *t; time_t now; char timestamp[64]; #endif if (level < baselevel) return; if (! initialized ) return; do_it = shouldLog(); if ( do_it ) { /* * plenty of people have complained that we need to timestamp * the log entries. the problem is that mktime & friends aren't * reentrant. */ #if defined(TIMESTAMP_LOG_MESSAGES) WA_lock(logMutex); time(&now); t = localtime(&now); strftime(timestamp, sizeof(timestamp), "%d-%b-%Y %T - ", t); WA_unlock(logMutex); #endif log = fopen(logPath, "a+"); if (log != NULL) { #if defined(TIMESTAMP_LOG_MESSAGES) fprintf(log, timestamp); #endif fprintf(log,"%s: ", WOLogLevel[level]); va_start(ap, format); vfprintf(log, format, ap); va_end(ap); fprintf(log,"\n"); fclose(log); } } /* * if the error is serious, include it into the server's log */ #if defined(Netscape) || defined(Apache) || defined(IIS) if (level == WO_ERR) { String *str; str = str_create(NULL, 128); va_start(ap,format); str_vappendf(str, format, ap); va_end(ap); #if defined(Netscape) log_error(0,"WebObjects",NULL,NULL,str->text); #elif defined(Apache) ap_log_error("WebObjects",0, APLOG_ERR, _webobjects_server, str->text); #elif defined(IIS) /* * again, we're stymied because we don't have a ptr to the * server struct * / { LPDWORD len = strlen(logstr); ServerSupportFunction(p->ConnID, HSE_APPEND_LOG_PARAMETER, str->text, &len, (LPDWORD)NULL); } */ #endif str_free(str); } #endif }