From 6c4fd620408b3f14a1d4164d58db70df7a252674 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 5 Sep 2004 00:03:16 +0000 Subject: implement proper logging git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@179 fefdeb5f-60dc-0310-8127-8f9354f1896f --- polyp/log.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 polyp/log.c (limited to 'polyp/log.c') diff --git a/polyp/log.c b/polyp/log.c new file mode 100644 index 00000000..413266df --- /dev/null +++ b/polyp/log.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include + +#include "log.h" +#include "xmalloc.h" +#include "util.h" + +static char *log_ident = NULL; +static enum pa_log_target log_target = PA_LOG_STDERR; +static void (*user_log_func)(const char *s) = NULL; + +void pa_log_set_ident(const char *p) { + if (log_ident) + pa_xfree(log_ident); + + log_ident = pa_xstrdup(p); +} + +void pa_log_set_target(enum pa_log_target t, void (*func)(const char*s)) { + assert(t == PA_LOG_USER || !func); + log_target = t; + user_log_func = func; +} + +void pa_log(const char *format, ...) { + va_list ap; + va_start(ap, format); + + switch (log_target) { + case PA_LOG_STDERR: + vfprintf(stderr, format, ap); + break; + case PA_LOG_SYSLOG: + openlog(log_ident ? log_ident : "???", LOG_PID, LOG_USER); + vsyslog(LOG_INFO, format, ap); + closelog(); + break; + case PA_LOG_USER: { + char *t = pa_vsprintf_malloc(format, ap); + assert(user_log_func); + user_log_func(t); + } + } + + va_end(ap); +} -- cgit