Public feed #378808

Someone

public text v1 · immutable
Raw Edit
·published 2007-03-02 20:14 UTC
rendered paste body
#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);
}