// TODO general logging overhaul. make sure messages make sense, are consistent, etc. // TODO make this not rely on so many globals. // TODO colorize stdout for easier reading #include #include #include #include #include "net.h" extern bool quiet; extern bool daemonize; extern bool remote_logging; extern bool use_syslog; extern bool log_to_file; extern FILE *outfilep; extern sock_t sock; // output logs according to runtime configuration void output(const char *msg) { if (!daemonize) { if (!quiet) { printf("%s\n", msg); } } if (remote_logging) { sockprintf(sock, "%s\r\n", msg); } if (log_to_file) { fprintf(outfilep, "%s\n", msg); } } // Display/log runtime messages void msg(const char *fmt, ...) { char buf[8192] = {0}; va_list vl; va_start(vl, fmt); vsnprintf(buf, sizeof(buf), fmt, vl); va_end(vl); if (use_syslog) { syslog(LOG_INFO | LOG_USER, "%s", buf); } if (!daemonize) { printf("%s\n", buf); } }