Default logger implementation can be modified by dbg_default_set_level/stream
[strongswan.git] / src / libstrongswan / debug.c
index 3db58ba..5bd4243 100644 (file)
 #include "debug.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, ...)
 {
  * 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);
        {
                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);
        }
 }
 
                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;
 void (*dbg) (int level, char *fmt, ...) = dbg_default;
+