summaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/utils.c b/utils.c
index b0f36fa..62f09fa 100644
--- a/utils.c
+++ b/utils.c
@@ -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) {