summaryrefslogtreecommitdiff
path: root/src/libstrongswan/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/debug.c')
-rw-r--r--src/libstrongswan/debug.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/libstrongswan/debug.c b/src/libstrongswan/debug.c
index b4a84cf76..51b7875d8 100644
--- a/src/libstrongswan/debug.c
+++ b/src/libstrongswan/debug.c
@@ -14,24 +14,57 @@
*/
#include <stdarg.h>
-#include <stdio.h>
#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;
+