diff options
Diffstat (limited to 'utils.c')
-rw-r--r-- | utils.c | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -18,26 +18,33 @@ #include "utils.h" #include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> +#include <syslog.h> #include <threads.h> #include <time.h> static once_flag g_once_flag = ONCE_FLAG_INIT; -static mtx_t g_log_mutex; -static void InitLogMutex() { - if (mtx_init(&g_log_mutex, mtx_plain) != thrd_success) abort(); +static void InitLogging() { openlog(NULL, LOG_PERROR, LOG_USER); } + +static int LogLevelToPriority(enum LogLevel log_level) { + switch (log_level) { + case kLogLevelDebug: + return LOG_DEBUG; + case kLogLevelInfo: + return LOG_INFO; + case kLogLevelWarning: + return LOG_WARNING; + case kLogLevelError: + return LOG_ERR; + } } -void LogImpl(const char* fmt, ...) { - call_once(&g_once_flag, InitLogMutex); - int status = mtx_lock(&g_log_mutex); +void LogImpl(enum LogLevel log_level, const char* fmt, ...) { + call_once(&g_once_flag, InitLogging); va_list args; va_start(args, fmt); - vfprintf(stderr, fmt, args); + vsyslog(LogLevelToPriority(log_level), fmt, args); va_end(args); - if (status == thrd_success) mtx_unlock(&g_log_mutex); } unsigned long long MillisNow(void) { |