From 5289249449e0e6792cdbc014ec7bc03a0c179354 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 16 Sep 2009 13:06:16 +0200 Subject: [PATCH] Default logger implementation can be modified by dbg_default_set_level/stream --- src/libstrongswan/debug.c | 40 ++++++++++++++++++++++++++++++++++++--- src/libstrongswan/debug.h | 10 ++++++++-- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/libstrongswan/debug.c b/src/libstrongswan/debug.c index 3db58ba74..5bd4243d7 100644 --- a/src/libstrongswan/debug.c +++ b/src/libstrongswan/debug.c @@ -18,20 +18,54 @@ #include "debug.h" +/** + * level logged by the default logger + */ +static int default_level = 1; + +/** + * stream logged to by the default logger + */ +static FILE *default_stream = NULL; + /** * default dbg function which printf all to stderr */ void dbg_default(int level, char *fmt, ...) { - if (level <= 1) + if (!default_stream) + { + default_stream = stderr; + } + if (level <= default_level) { va_list args; va_start(args, fmt); - vfprintf(stderr, fmt, args); - fprintf(stderr, "\n"); + vfprintf(default_stream, fmt, args); + fprintf(default_stream, "\n"); va_end(args); } } +/** + * set the level logged by the default stderr logger + */ +void dbg_default_set_level(int level) +{ + default_level = level; +} + +/** + * set the stream logged by dbg_default() to + */ +void dbg_default_set_stream(FILE *stream) +{ + default_stream = stream; +} + +/** + * The registered debug hook. + */ void (*dbg) (int level, char *fmt, ...) = dbg_default; + diff --git a/src/libstrongswan/debug.h b/src/libstrongswan/debug.h index c54eb293c..c3b71cee3 100644 --- a/src/libstrongswan/debug.h +++ b/src/libstrongswan/debug.h @@ -52,10 +52,16 @@ # define DBG4(...) {} #endif -/** dbg function hook, uses stderr logger by default */ +/** dbg function hook, uses dbg_default() by default */ extern void (*dbg) (int level, char *fmt, ...); -/** default logging function, prints to stderr */ +/** default logging function */ void dbg_default(int level, char *fmt, ...); +/** set the level logged by dbg_default() */ +void dbg_default_set_level(int level); + +/** set the stream logged by dbg_default() to */ +void dbg_default_set_stream(FILE *stream); + #endif /** DEBUG_H_ @}*/