Public feed
#378808
#include "error.h"
FILE *logfile = NULL;
int verbose = 0;
char *log_level_str[] = {
"Fatal", "Warning", "Notice", "Debug"
};
int logfile_redirect(char *filename) {
if (!(logfile = fopen(filename, "a+"))) {
log_report(LOG_ERROR_FATAL, "Could not redirect log stream to `%s'.", filename);
return(1);
}
return(0);
}
void log_report(int level, char *fmt, ...) {
va_list args;
FILE *log_stream;
va_start(args, fmt);
if ((level & LOG_TYPE_MASK) > verbose && !(level & LOG_FORCE))
return;
if (logfile)
log_stream = logfile;
else
log_stream = stderr;
if (!(level & LOG_NOPREFIX))
fprintf(log_stream, "(%s) ", log_level_str[level]);
vfprintf(log_stream, fmt, args);
fprintf(log_stream, "\n");
fflush(log_stream);
}