Default logger implementation can be modified by dbg_default_set_level/stream
[strongswan.git] / src / libstrongswan / debug.c
index a9a49f0..5bd4243 100644 (file)
@@ -11,8 +11,6 @@
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
- *
- * $Id$
  */
 
 #include <stdarg.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;
+