diff --git a/ulog.c b/ulog.c index 05946a0..6c2c1f8 100644 --- a/ulog.c +++ b/ulog.c @@ -29,6 +29,7 @@ static int _ulog_facility = -1; static int _ulog_threshold = LOG_DEBUG; static int _ulog_initialized = 0; static const char *_ulog_ident = NULL; +static struct udebug_buf *udb = NULL; static const char *ulog_default_ident(void) { @@ -120,6 +121,11 @@ static void ulog_syslog(int priority, const char *fmt, va_list ap) vsyslog(priority, fmt, ap); } +void ulog_udebug(struct udebug_buf *_udb) +{ + udb = _udb; +} + void ulog_open(int channels, int facility, const char *ident) { ulog_close(); @@ -149,6 +155,14 @@ void ulog(int priority, const char *fmt, ...) { va_list ap; + if (udb) { + va_start(ap, fmt); + udebug_entry_init(udb); + udebug_entry_vprintf(udb, fmt, ap); + udebug_entry_add(udb); + va_end(ap); + } + if (priority > _ulog_threshold) return; diff --git a/ulog.h b/ulog.h index 46d3c77..0b81cc3 100644 --- a/ulog.h +++ b/ulog.h @@ -21,6 +21,8 @@ #include +#include "udebug.h" + enum { ULOG_KMSG = (1 << 0), ULOG_SYSLOG = (1 << 1), @@ -28,6 +30,7 @@ enum { }; void ulog_open(int channels, int facility, const char *ident); +void ulog_udebug(struct udebug_buf *udb); void ulog_close(void); void ulog_threshold(int threshold);